在C++;或者Java有没有办法获得CPU使用率?
我想写一个小程序,只显示CPU使用率的百分比,就像任务管理器一样。我知道中级C++和java。这两种语言都有办法做到吗?如果是的话,也许举个简单的例子?我看到了一段C++命令,但我不能做它的头或尾。在C++;或者Java有没有办法获得CPU使用率?,java,c++,cpu-usage,Java,C++,Cpu Usage,我想写一个小程序,只显示CPU使用率的百分比,就像任务管理器一样。我知道中级C++和java。这两种语言都有办法做到吗?如果是的话,也许举个简单的例子?我看到了一段C++命令,但我不能做它的头或尾。 我在一台计算机上使用Windows7,在另一台计算机上使用XP。至于多核响应,我只想像任务管理器一样显示CPU使用率百分比,即使使用多核处理器也是如此。CPU使用率是操作系统属性,而不是语言属性。检索它的方法将特定于您正在使用的操作系统(您无法识别) 此外,“CPU使用率”是一个非常模糊的术语,有多
我在一台计算机上使用Windows7,在另一台计算机上使用XP。至于多核响应,我只想像任务管理器一样显示CPU使用率百分比,即使使用多核处理器也是如此。CPU使用率是操作系统属性,而不是语言属性。检索它的方法将特定于您正在使用的操作系统(您无法识别)
此外,“CPU使用率”是一个非常模糊的术语,有多个核心,等等。在Java中,您可以使用“windows.h”中提供的一些系统调用函数,如GetProcessorInfo()、CallNTPowerInformation()、GetTickCount()、QueryPerformanceFrequency()、QueryPerformanceCounter()等。你可以用谷歌搜索它们,或者在MSDN中找到它们。我希望这个答案能帮助你。< P>答案是平台特定的,java和C++案例之间有区别。在某种程度上,您需要与操作系统特定的API接口以提取统计数据。有四种可能的方法:
- 调用适当的外部系统监控命令(特定于系统)并“刮取”该命令的输出。你可以用java或C++来做这件事。< /p> 在C++中(或在java中使用jni/jNA……如果您真的必须),在OS特定的本地API上调用,提供外部系统监视所使用的信息。< /p>
- 在Java中,使用一些现有的第三方库来处理特定于系统的JNI/JNA内容。可能的例子包括JavaSysMon和SIGAR。。。虽然我不能提出具体的建议
- 您可以使用Java监控API。。。但他们没有提供足够的信息。您可以获得有关此进程资源使用情况和总体平均负载的信息,但无法获得有关其他进程的信息
double sysLoad = ManagementFactory.
getOperatingSystemMXBean().
getSystemLoadAverage();
- 不是在每个平台上都能工作
- 返回过去一分钟的平均负载
OperatingSystemMXBean osBean = ManagementFactory
.getPlatformMXBean(com.sun.management.OperatingSystemMXBean.class);
// What % CPU load this current JVM is taking, from 0.0-1.0
System.out.println(osBean.getProcessCpuLoad());
// What % load the overall system is at, from 0.0-1.0
System.out.println(osBean.getSystemCpuLoad());
假设您使用的是Windows系统,则可以使用Windows Management Instrumentation(WMI)。一旦你让它工作起来,它就是强大的。我从来没有用过Java。当然,使用C#NET更容易。 一个好的链接是
如果你试试这个,请告诉我。我可能对帮助你感兴趣,因为这也是我的兴趣。 < P>如果你使用Linux系统,考虑使用shell脚本,比如BASH。原因是shell脚本对于操作系统调用非常强大,比如获取进程ID和用法(pid命令)。IT技术人员更容易使用BASH脚本而不是java或C++。你应该说哪一个。