How to figure out the cpu usage of a java-process in java

烈酒焚心 提交于 2019-12-11 16:52:33

问题


i've been searching the web for a possibility in java to figure out, how much cpu my application needs but sadly couldn't find a solution. Most of the people referred to "OperatingSystemMXBean" which works on platforms like linux, but not on windows. My application will run on multiple os but mostly on windows. So is there any way to figure out the cpu usage of a java-application in the same runtime which is platform independend or supports multiple platforms including windows, mac and linux?

Thanks
Baschdi


回答1:


I disagree with your statement. OperatingSystemMXBean is available on Windows. Just it's a bit hidden. Be careful with the package import. It's not the default offered by 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());
}}

If you run this excerpt probably you obtain 0.0. It's not a malfunction. It's only a very light program and the cpu load may take a while to be calculated. You could obtain -1 on first invocations. Try it in your app, recovering the value in various instants.

If I'm not mistaken, this class is included in rt.jar. You may find some problems importing the package with Eclipse IDE. Here you can find the explanation and how to fix it. Why is access restricted to jre6/lib/rt.jar for OperatingSystemMxBean?




回答2:


This works nice on windows 10. Measuring cpu util of skype:

c:\Windows\system32\typeperf "\Process(Skype)\% processor time"


来源:https://stackoverflow.com/questions/36155751/how-to-figure-out-the-cpu-usage-of-a-java-process-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!