如何使用Java代码获取处理器每个核心的当前利用率百分比
我有一种情况,我需要得到CPU的每个核心的利用率。例如,如果我有一个4核处理器,则预期输出为:如何使用Java代码获取处理器每个核心的当前利用率百分比,java,Java,我有一种情况,我需要得到CPU的每个核心的利用率。例如,如果我有一个4核处理器,则预期输出为: Core-1 Core-2 Core-3 Core-4 Utilization 31.04 12.89 2.45 10.56 我尝试使用以下代码: OperatingSystemMXBean operatingSystemMXBean = ManagementFactor
Core-1 Core-2 Core-3 Core-4
Utilization 31.04 12.89 2.45 10.56
我尝试使用以下代码:
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getSystemLoadAverage());
上面的代码段有两个问题。首先,在Win32-bit上,输出为-1.0,其次,方法的名称getSystemLoadAverage()
给出了一个直觉,它只显示总体cpu利用率
请帮助我解决这个问题,如如何获得处理器的每个核心的利用率
谢谢您必须以多线程方式编写应用程序。在四核上编写单线程应用程序并不比在单核上更快(理论上)。为了充分利用CPU内核,您必须为每个内核显式地编程一个进程
您可以使用SIGAR。他们的网站上说: 一个API,用于访问系统信息,而不考虑底层平台 我相信这就是你想要的。看看他们的网站:
JavaSysMon是另一个要查看的库:Windows7和Java是一个系统,现在可以一次在多个处理器上工作,处理器本身将分割工作。无论如何,您尝试的东西不能用java完成,因为它运行在一个没有这种能力的虚拟机上。你想做的事情可以在windows的任务管理器中实现,设置应用程序与内核的亲缘关系,或者在linux上使用
nice
工具。谢谢你的回复。我不需要在所有内核上运行我的应用程序。相反,我只需要检索处理器每个核心的利用率。就像在任务管理器中一样,我们有四个图形用于处理器的4个核心。所以我只需要在代码中检索这些图的数值。