我一直在网上搜索 java 中的可能性,以确定我的应用程序需要多少 cpu,但遗憾的是找不到解决方案。大多数人都提到了“OperatingSystemMXBean”,它可以在 linux 等平台上运行,但不能在 Windows 上运行。我的应用程序将在多个操作系统上运行,但主要在 Windows 上运行。那么有什么方法可以计算出同一运行时中 java 应用程序的 cpu 使用情况,该运行时是平台独立的还是支持包括 windows、mac 和 linux 在内的多个平台?
谢谢巴施迪
_
我一直在网上搜索 java 中的可能性,以确定我的应用程序需要多少 cpu,但遗憾的是找不到解决方案。大多数人都提到了“OperatingSystemMXBean”,它可以在 linux 等平台上运行,但不能在 Windows 上运行。我的应用程序将在多个操作系统上运行,但主要在 Windows 上运行。那么有什么方法可以计算出同一运行时中 java 应用程序的 cpu 使用情况,该运行时是平台独立的还是支持包括 windows、mac 和 linux 在内的多个平台?
谢谢巴施迪
_
我不同意你的说法。OperatingSystemMXBean
在 Windows 上可用。只是有点隐蔽。小心包导入。它不是 Eclipse 提供的默认值。
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class Test {
public static void main(String[] args) {
OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getProcessCpuLoad());
}}
如果您运行此摘录,您可能会获得 0.0.0。这不是故障。这只是一个非常轻量级的程序,cpu 负载可能需要一段时间才能计算出来。您可以在第一次调用时获得 -1。在您的应用程序中尝试,在不同的瞬间恢复价值。
如果我没记错的话,这个类包含在 rt.jar 中。您可能会发现使用 Eclipse IDE 导入包时会出现一些问题。在这里您可以找到解释以及如何解决它。 为什么限制对 OperatingSystemMxBean 的 jre6/lib/rt.jar 的访问?
这在 Windows 10 上效果很好。测量 Skype 的 cpu util:
c:\Windows\system32\typeperf "\Process(Skype)\% processor time"