社区
Java SE
帖子详情
怎样获得system memory大小?
zhoulinjulian
2005-01-13 05:38:59
请问怎样获得free的和total的system memory大小?谢谢!
...全文
192
14
打赏
收藏
怎样获得system memory大小?
请问怎样获得free的和total的system memory大小?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhoulinjulian
2005-01-17
打赏
举报
回复
谢谢各位!
廖雪峰
2005-01-14
打赏
举报
回复
使用JNI调用C代码,GetSystemInfo
shengui1083
2005-01-14
打赏
举报
回复
调用windows api,搜索
batfree
2005-01-14
打赏
举报
回复
虚拟机内在与Windows内存有差别吗?
iforem
2005-01-14
打赏
举报
回复
使用JNI吧
用google搜索一下,或许能找到别人写好的库
zhoulinjulian
2005-01-14
打赏
举报
回复
晕倒了,Windows API我不熟啊,谁能说得更具体一些啊?谢谢啦!
wjsfr
2005-01-14
打赏
举报
回复
我也觉得只能调用windows api
wadsunglow
2005-01-14
打赏
举报
回复
long total=Runtime.getRuntime().totalMemory();
long free=Runtime.getRuntime().freeMemory();
treeroot
2005-01-14
打赏
举报
回复
应该没办法吧,调用Windows API
zhoulinjulian
2005-01-14
打赏
举报
回复
用什么方法获得系统内存的信息?包括空闲的和总共的系统内存大小。谢谢!
zhoulinjulian
2005-01-13
打赏
举报
回复
不对吧,Runtime.freeMemory()和Runtime.totalMemory()返回的都是Java 虚拟机的内存数值吧,
我要的是系统内存啊,即windows的。
treeroot
2005-01-13
打赏
举报
回复
顶
redex
2005-01-13
打赏
举报
回复
up.
fog628
2005-01-13
打赏
举报
回复
Runtime.freeMemory() 返回系统的空闲内存数。
totalMemory() 返回 Java 虚拟机的内存总数
sigar-sigar-1.6.4.tar.gz
开源工具包 SIGAR System Information Gatherer And Reporter 即 系统信息收集和报告 官方站点: http: support hyperic com display SIGAR Home;jsessionid A9705887A07D20BBAC9A96500BC60822 SIGAR 官方站点 写道 The Sigar API provides a portable interface for gathering system information such as: System
memory
swap cpu load average uptime logins Per process
memory
cpu credential info state arguments environment open files File system detection and metrics Network interface detection configuration info and metrics TCP and UDP connection tables Network route table This information is available in most operating systems but each OS has their own way s providing it SIGAR provides developers with one API to access this information regardless of the underlying platform The core API is implemented in pure C with bindings currently implemented for Java Perl Ruby Python Erlang PHP and C# 几乎所有的硬件信息 网络情况都可以得到 1 CPU信息 包括基本信息(vendor model mhz cacheSize)和统计信息(user sys idle nice wait) 2 文件系统信息 包括Filesystem Size Used Avail Use% Type 3 事件信息 类似Service Control Manager 4 内存信息 物理内存和交换内存的总数 使用数 剩余数;RAM的
大小
5 网络信息 包括网络接口信息和网络路由信息 6 进程信息 包括每个进程的内存 CPU占用数 状态 参数 句柄 7 IO信息 包括IO的状态 读写
大小
等 8 服务状态信息 9 系统信息 包括操作系统版本 系统资源限制情况 系统运行时间以及负载 JAVA的版本信息等 ">开源工具包 SIGAR System Information Gatherer And Reporter 即 系统信息收集和报告 官方站点: http: support hyperic com display SIGAR Home;jsessionid A9705887A07D20BBAC9A96500BC60822 SIGAR 官方站点 写道 The Sigar API provides a portable interface for gathering system i [更多]
java在cpu的占有率
public class MonitorInfoBean { private long javacount; /** 可使用内存. */ private long total
Memory
; /** 剩余内存. */ private long free
Memory
; /** 最大可使用内存. */ private long max
Memory
; /** 操作系统. */ private String osName; /** 总的物理内存. */ private long total
Memory
Size; /** 剩余的物理内存. */ private long freePhysical
Memory
Size; /** 已使用的物理内存. */ private long used
Memory
; /** 线程总数. */ private int totalThread; /** cpu使用率. */ private double cpuRatio; /** java使用内存 */ private double javaUse
Memory
; public String getOsName() { return osName; } public void setOsName(String osName) { this.osName = osName; } public int getTotalThread() { return totalThread; } public void setTotalThread(int totalThread) { this.totalThread = totalThread; } public double getCpuRatio() { return cpuRatio; } public void setCpuRatio(double cpuRatio) { this.cpuRatio = cpuRatio; } public long getTotal
Memory
() { return total
Memory
; } public void setTotal
Memory
(long total
Memory
) { this.total
Memory
= total
Memory
; } public long getFree
Memory
() { return free
Memory
; } public void setFree
Memory
(long free
Memory
) { this.free
Memory
= free
Memory
; } public long getMax
Memory
() { return max
Memory
; } public void setMax
Memory
(long max
Memory
) { this.max
Memory
= max
Memory
; } public long getTotal
Memory
Size() { return total
Memory
Size; } public void setTotal
Memory
Size(long total
Memory
Size) { this.total
Memory
Size = total
Memory
Size; } public long getFreePhysical
Memory
Size() { return freePhysical
Memory
Size; } public void setFreePhysical
Memory
Size(long freePhysical
Memory
Size) { this.freePhysical
Memory
Size = freePhysical
Memory
Size; } public long getUsed
Memory
() { return used
Memory
; } public void setUsed
Memory
(long used
Memory
) { this.used
Memory
= used
Memory
; } public void setJavacount(long javacount) { this.javacount = javacount; } public long getJavacount() { return javacount; } public void setJavaUse
Memory
(double javaUse
Memory
) { this.javaUse
Memory
= javaUse
Memory
; } public double getJavaUse
Memory
() { return javaUse
Memory
; } } import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.LineNumberReader; import java.util.StringTokenizer; import sun.management.ManagementFactory; import com.sun.management.OperatingSystemMXBean; public class Cpu { private static final int CPUTIME = 30; private static final int PERCENT = 100; private static final int FAULTLENGTH = 10; //private static final File versionFile = new File("/proc/version"); private static String linuxVersion = null; public double getCpuRatio() throws Exception { // 操作系统 String osName = System.getProperty("os.name"); double cpuRatio = 0; if (osName.toLowerCase().startsWith("windows")) { //返回构造好的监控对象 return cpuRatio = this.getCpuRatioForWindows(); } else { return cpuRatio = this.getCpuRateForLinux(); } } /** *
获得
当前的监控对象. * * @return 返回构造好的监控对象 */ public MonitorInfoBean getMonitorInfoBean() throws Exception { int kb = 1024; // 虚拟机总内存
大小
long total
Memory
= Runtime.getRuntime().total
Memory
() / kb; // 剩余内存 long free
Memory
= Runtime.getRuntime().free
Memory
() / kb; //java使用的内存 long javaUse
Memory
= total
Memory
- free
Memory
; // 最大可使用内存 long max
Memory
= Runtime.getRuntime().max
Memory
() / kb; OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory .getOperatingSystemMXBean(); // 操作系统 String osName = System.getProperty("os.name"); // 总的物理内存 long total
Memory
Size = osmxb.getTotalPhysical
Memory
Size() / kb; // 剩余的物理内存 long freePhysical
Memory
Size = osmxb.getFreePhysical
Memory
Size() / kb; // 已使用的物理内存 long used
Memory
= (osmxb.getTotalPhysical
Memory
Size() - osmxb .getFreePhysical
Memory
Size()) / kb; //
获得
线程总数 ThreadGroup parentThread; for (parentThread = Thread.currentThread().getThreadGroup(); parentThread .getParent() != null; parentThread = parentThread.getParent()) ; int totalThread = parentThread.activeCount(); double cpuRatio = 0; if (osName.toLowerCase().startsWith("windows")) { cpuRatio = this.getCpuRatioForWindows(); } else { cpuRatio = this.getCpuRateForLinux(); } // 构造返回对象 MonitorInfoBean infoBean = new MonitorInfoBean(); infoBean.setFree
Memory
(free
Memory
); infoBean.setFreePhysical
Memory
Size(freePhysical
Memory
Size); infoBean.setMax
Memory
(max
Memory
); infoBean.setOsName(osName); infoBean.setTotal
Memory
(total
Memory
); infoBean.setTotal
Memory
Size(total
Memory
Size); infoBean.setTotalThread(totalThread); infoBean.setUsed
Memory
(used
Memory
); infoBean.setCpuRatio(cpuRatio); infoBean.setJavaUse
Memory
(javaUse
Memory
); return infoBean; } private static double getCpuRateForLinux() { InputStream is = null; InputStreamReader isr = null; BufferedReader brStat = null; StringTokenizer tokenStat = null; try { System.out.println("Get usage rate of CUP , linux version: " + linuxVersion); Process process = Runtime.getRuntime().exec("top -b -n 1"); is = process.getInputStream(); isr = new InputStreamReader(is); brStat = new BufferedReader(isr); if (linuxVersion.equals("2.4")) { brStat.readLine(); brStat.readLine(); brStat.readLine(); brStat.readLine(); tokenStat = new StringTokenizer(brStat.readLine()); tokenStat.nextToken(); tokenStat.nextToken(); String user = tokenStat.nextToken(); tokenStat.nextToken(); String system = tokenStat.nextToken(); tokenStat.nextToken(); String nice = tokenStat.nextToken(); System.out.println(user + " , " + system + " , " + nice); user = user.substring(0, user.indexOf("%")); system = system.substring(0, system.indexOf("%")); nice = nice.substring(0, nice.indexOf("%")); float userUsage = new Float(user).floatValue(); float systemUsage = new Float(system).floatValue(); float niceUsage = new Float(nice).floatValue(); return (userUsage + systemUsage + niceUsage) / 100; } else { brStat.readLine(); brStat.readLine(); tokenStat = new StringTokenizer(brStat.readLine()); tokenStat.nextToken(); tokenStat.nextToken(); tokenStat.nextToken(); tokenStat.nextToken(); tokenStat.nextToken(); tokenStat.nextToken(); tokenStat.nextToken(); String cpuUsage = tokenStat.nextToken(); System.out.println("CPU idle : " + cpuUsage); Float usage = new Float(cpuUsage.substring(0, cpuUsage.indexOf("%"))); return (1 - usage.floatValue() / 100); } } catch (IOException ioe) { System.out.println(ioe.getMessage()); freeResource(is, isr, brStat); return 1; } finally { freeResource(is, isr, brStat); } } private static void freeResource(InputStream is, InputStreamReader isr, BufferedReader br) { try { if (is != null) is.close(); if (isr != null) isr.close(); if (br != null) br.close(); } catch (IOException ioe) { System.out.println(ioe.getMessage()); } } /** *
获得
CPU使用率. * * @return 返回cpu使用率 */ double getCpuRatioForWindows() { try { String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine," + "KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount"; // 取进程信息 long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd)); Thread.sleep(CPUTIME); long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); if (c0 != null && c1 != null) { long idletime = c1[0] - c0[0]; long busytime = c1[1] - c0[1]; return Double.valueOf( PERCENT * (busytime) / (busytime + idletime)) .doubleValue(); } else { return 0.0; } } catch (Exception ex) { ex.printStackTrace(); return 0.0; } } /** * * 读取CPU信息. * * @param proc */ private long[] readCpu(final Process proc) { long[] retn = new long[3]; try { proc.getOutputStream().close(); InputStreamReader ir = new InputStreamReader(proc.getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line = input.readLine(); if (line == null || line.length() < FAULTLENGTH) { return null; } int capidx = line.indexOf("Caption"); int cmdidx = line.indexOf("CommandLine"); int rocidx = line.indexOf("ReadOperationCount"); int umtidx = line.indexOf("UserModeTime"); int kmtidx = line.indexOf("KernelModeTime"); int wocidx = line.indexOf("WriteOperationCount"); long idletime = 0; long kneltime = 0; long usertime = 0; while ((line = input.readLine()) != null) { if (line.length() < wocidx) { continue; } // 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount, // ThreadCount,UserModeTime,WriteOperation String caption = Bytes.substring(line, capidx, cmdidx - 1) .trim(); String cmd = Bytes.substring(line, cmdidx, kmtidx - 1).trim(); if (cmd.indexOf("wmic.exe") >= 0) { continue; } // log.info("line="+line); if (!caption.equals("javaw.exe")) { idletime += Long.valueOf( Bytes.substring(line, kmtidx, rocidx - 1).trim()) .longValue(); idletime += Long.valueOf( Bytes.substring(line, umtidx, wocidx - 1).trim()) .longValue(); continue; } kneltime += Long.valueOf( Bytes.substring(line, kmtidx, rocidx - 1).trim()) .longValue(); usertime += Long.valueOf( Bytes.substring(line, umtidx, wocidx - 1).trim()) .longValue(); } retn[0] = idletime; retn[1] = kneltime + usertime; return retn; } catch (Exception ex) { ex.printStackTrace(); } finally { try { proc.getInputStream().close(); } catch (Exception e) { e.printStackTrace(); } } return null; } } class Bytes { public static String substring(String src, int start_idx, int end_idx) { byte[] b = src.getBytes(); String tgt = ""; for (int i = start_idx; i <= end_idx; i++) { tgt += (char) b[i]; } return tgt; } } public class Tt { /** * 测试方法 * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Cpu c = new Cpu(); while (true) { System.out .println("java的cpu占有率=" + c.getCpuRatioForWindows() + "%"); MonitorInfoBean monitorInfo = c.getMonitorInfoBean(); System.out.println("虚拟机总内存
大小
=" + monitorInfo.getTotal
Memory
() + "kb"); System.out.println("剩余内存=" + monitorInfo.getFree
Memory
() + "kb"); System.out.println("java使用的内存=" + monitorInfo.getJavaUse
Memory
() + "kb"); } } }
java system.free
memory
()_关于java:什么是Runtime.getRuntime()。total
Memory
()和free
Memory
()?...
我一直想知道Runtime.getRuntime()。total
Memory
(),Runtime.getRuntime()。free
Memory
()和Runtime.getRuntime()。max
Memory
()的确切含义是什么。我的理解是,Runtime.getRuntime().total
Memory
()返回我的进程正在使用的总内存。 那是对的吗?free
Memory
()和max
Memory
...
TensorFlow:Allocation of 256000000 exceeds 10% of system
memory
对auc的影响
我在原来特征基础上,增加了一列特征,这列特征是一个list,长度不固定[0,5]之间的一个长度,比如 样本 1: ['找工作', '发工资', '领导力']代码中给该列特征先做了一个分桶,根据该列特征中词的个数,来确定桶的
大小
;我这里大约2k个不同的词,hash_bucket_size=2e3;然后做tf.feature_column.embedding_column(feat, 8);这个8怎么确定?2000开两次根号,等于6.7,向上取整得到 7,因为这样不会造成词重叠,但是会造成一些参数浪费;至于效果
Why
Memory
Barriers?中文翻译(上)
转载自:http://www.wowotech.net/kernel_synchronization/Why-
Memory
-Barriers.html 本文是对perfbook的附录C Why
Memory
Barrier的翻译,希望通过对大师原文的翻译可以弥补之前译者发布的关于
memory
barrier的一篇很拙劣的文章的遗憾。本文的翻译不是一一对应的翻译,主要是领会精神,用自己的语言...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章