获取特定进程 CPU 用法

Get particular process CPU usage

我正在尝试使用 OperatingSystemMXBean 获取 CPU 与 getSystemCpuLoad() 的用法。

代码

public static void main(String[] argv) throws Exception {
  OperatingSystemMXBean mbean=(com.sun.management.OperatingSystemMXBean)ManagementFactory.getOperatingSystemMXBean();
  double load;
  while(true){
    System.out.println(mbean.getSystemCpuLoad());

    try {
      Thread.sleep(1000);
    }
 catch (    InterruptedException e) {
      e.printStackTrace();
    }
  }
}

如何获得任何特定进程的 CPU 用法,例如 firefox.exe

通过使用 OperatingSystemMXBean,您只需阅读 JVM 的 CPU 用法即可。您将无法检索 cpu-其他进程的负载。

您需要调用系统函数,因此您需要 JNI。

但是您可以使用一个名为 sigar 的库。它根据 Apache 许可证 2.0 版获得许可。

您可以使用一些本机库或仅解析来自以下内容的响应:

 Process process = Runtime.getRuntime().exec("top | grep firefox");
 BufferedReader in = new BufferedReader(
               new InputStreamReader(process.getInputStream()) );

但是 java 不承担这些任务,我建议考虑使用 C++ 或 C...