如何使用 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()
来获取内存大小,但它返回的长值我无法转换为 MB 或 GB。
【问题讨论】:
你可以使用OperatingSystemMXBean
docs.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 中的那个强> 包。
【讨论】:
显示的链接显示了 OperatingSystemMXBean 的方法,该方法在 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 和内存性能?的主要内容,如果未能解决你的问题,请参考以下文章