如何使用 java 1.8 获得 Window CPU 和内存性能?

Posted

技术标签:

【中文标题】如何使用 java 1.8 获得 Window CPU 和内存性能?【英文标题】:How to get the Window CPU and memory performance using java 1.8? 【发布时间】:2016-08-16 12:22:15 【问题描述】:

我想使用java 1.8获取以下数据。

    CPU 使用率。 总物理内存 可用内存 可用内存

我使用过OperatingSystemMXBean,但它没有获取上述数据的方法。

我还使用Runtime.getRuntime() 来获取内存大小,但它返回的长值我无法转换为 MBGB

【问题讨论】:

你可以使用OperatingSystemMXBeandocs.oracle.com/javase/7/docs/jre/api/management/extension/com/… How to monitor the computer's cpu, memory, and disk usage in Java?的可能重复 如果一切都失败了,您可以调查 Windows API 并使用JNA。 Related:***.com/questions/2062440/java-cpu-usage-monitoring/… OperatingSystemMXBean 可能会给出错误的结果或'不支持'的值,看看javasysmon的源码。 如果可能的话,我会推荐试用 SIGAR API:***.com/questions/47177/… 【参考方案1】:

我检查了 javadocs,似乎它们在这里:http://docs.oracle.com/javase/7/docs/jre/api/management/extension/com/sun/management/OperatingSystemMXBean.html

但是;你应该小心导入的类。您应该使用 com.sun.management 包中的那个,而不是 java.lang.management 中的那个强> 包。

【讨论】:

显示的链接显示了 OperatingSystemMXBe‌​an 的方法,该方法在 java 1.7 之前可用。目前我使用的是 Java 1.8,它没有任何方法可以显示我上面提到的结果。 如您在此处看到的:docs.oracle.com/javase/8/docs/jre/api/management/extension/com/… 它们仍包含在 1.8 中 谢谢。我已将包更改为 com.sun.management 并获得了所有必需的方法。 But the getProcessCpuLoad()getSystemCpuLoad() 返回 -1。如何使其正常工作? 据我检查,这些方法的内部是如预期的原生的。所以我会使用我自己的 JNI 代码。 javaworld.com/article/2077361/learn-java/… 可能是一个很好的起点。 感谢您提供这些有用的信息。提到的代码sn-p看起来有点复杂,但是我一定会尝试集成这个JNI代码。

以上是关于如何使用 java 1.8 获得 Window CPU 和内存性能?的主要内容,如果未能解决你的问题,请参考以下文章

如何在window下获得oracle的sid

Java环境变量从jdk1.7修改为1.8

JAVA开发环境的重装--jdk1.7/1.8与eclipse的下载地址

jdk 1.8 开发环境配置

Java中如何获得某个磁盘(根目录)?比如C盘

jquery-ui 选项卡使用较旧的 jquery 1.8 获得锚点 href