Using Java to retrieve the CPU Usage for Window's Processes

北慕城南 提交于 2019-12-06 06:29:53

问题


I am looking for a Java solution to finding the CPU usage for a running process in Windows. After looking around the web, there seems to be little information on a solution in Java. Keep in mind, I am not looking to find the CPU usage for the JVM, but any process running in Windows at the time.

I am able to retrieve the memory usage in Java by using the exec("tasklist.exe ... ") to retrieve and parse process information. Although there is an aggregate CPU cycle timer for each process, I do not see a CPU usage column.

Any help would be greatly appreciated. Also, if possible, I would like to stay away from C libraries; however, if there is no other alternative, a solution by that means would be appropriate.

Thanks a lot,

Steve


回答1:


If a GPL licensed API is fine for you, try out

SIGAR - System Information Gatherer And Reporter

It allows access to the info you want (and much more) and is supported on many relevant platforms




回答2:


Look into Jacob. It will let you call COM objects, and there are COM objects galore for this kind of information on Windows.




回答3:


You be writing/using a separate program to dump that data somewhere and could then pick it up from Java through either network, files, or DB. In Linux you could always read /proc but not on Win, a separate proggy would be needed (without JNI).




回答4:


Have a look at these questions:

  • How to do I check CPU and Memory Usage in Java?
  • Using Java to get OS-level system information
  • How to monitor the computer’s cpu, memory, and disk usage in Java?
  • CPU load from Java
  • Efficient way of getting thread CPU time using JMX



回答5:


any running process in Windows

Thus, not controlled by Java in any way?

I would like to stay away from JNI

Forget it. Java isn't platform specific. If you want to access platform specific information, you can't go around JNI.




回答6:


Try out javasysmon, BSD licensed (to be precise: the FreeBSD 2-clause license).

I used it to obtain CPU core and CPU Usage. It is much better than using tasklist.exe I think.



来源:https://stackoverflow.com/questions/1767271/using-java-to-retrieve-the-cpu-usage-for-windows-processes

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