获取特定进程 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...
我正在尝试使用 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...