在JDK中是否有直接的方法来获取机器上的CPU使用情况,无论是它的mac,windows还是linux?

问题描述:

我有一个应用程序,其中我必须显示CPU & RAM的用法,我尝试了这么多事情,但没有得到任何准确的解决方案。因此,最终以最终以编程方式查询CPU使用率是不可能的,因为使用纯Java。根本就这个没有API在博客上张贴在JDK中是否有直接的方法来获取机器上的CPU使用情况,无论是它的mac,windows还是linux?

博客链接:http://www.javaworld.com/article/2077361/learn-java/profiling-cpu-usage-from-within-a-java-application.html

我曾尝试(我使用的Java 1.8):

OperatingSystemMXBean osBean = ManagementFactory.getOperatingSystemMXBean(); 
System.out.println("========="+ osBean.getSystemLoadAverage()); 

MemoryMXBean bean = ManagementFactory.getMemoryMXBean(); 
System.out.println("######"+ bean.getNonHeapMemoryUsage()); 

ThreadMXBean mxbean = ManagementFactory.getThreadMXBean(); 
System.out.println("========="+ mxbean.getCurrentThreadCpuTime()); 
+1

请不要垃圾标签您的问题。例如,这与Oracle无关。 – mathguy

+0

Downvoters,请提及你的downvote的原因。 – Dev

+1

开发 - 我完全同意你对downvoters的要求,以解释他们的理由。 (我甚至会主张SO将它作为一个要求 - 即使它是匿名评论,这可能是一个编码站点的痛苦)。为了记录,我不会低估垃圾邮件标签,我只是对此发表评论。你有**两个** downvoters谁没有解释他们发现你的问题有问题。请注意,尽管如此,大多数downvoters不会**解释他们的投票。 – mathguy

好吧,我不得不做这样的事情,有时前,我没有找到一个简单的和本土的方式来做到这一点。

无论如何,经过一番研究,我发现一个相当酷的库,可以用于这种任务,并支持各种各样的操作系统。您应该在OSHI上看看here,OSHI是一个免费的基于Java的JNA(本地)操作系统和硬件信息库。