我想写一个小程序只是为了显示CPU使用率百分比,就像任务管理器一样。我知道中级C ++和Java。有没有办法用这两种语言做到这一点?如果是这样,也许是一个简短的例子我看到了一些C ++命令的页面,但我无法做出正面或反面。
我在一台计算机上使用Windows 7,在另一台计算机上使用XP。至于多核响应,我只想像任务管理器一样显示CPU使用百分比,即使使用多核处理器也是如此。
答案 0 :(得分:5)
double sysLoad = ManagementFactory.
getOperatingSystemMXBean().
getSystemLoadAverage();
编辑: 最近发现了这个
http://sellmic.com/blog/2011/07/21/hidden-java-7-features-cpu-load-monitoring/
在Java 7中,您可以使用 com.sun.management 包来获取进程负载或系统负载。
用法:
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());
答案 1 :(得分:1)
“windows.h”中提供了一些系统调用函数,如GetProcessorInfo(),CallNTPowerInformation(),GetTickCount(),QueryPerformanceFrequency(),QueryPerformanceCounter()等。您可以谷歌他们,或在MSDN中找到它们。我希望这个答案可以帮到你。
答案 2 :(得分:1)
答案将是特定于平台的,并且在Java和C ++案例之间存在差异。在某种程度上,您需要与特定于操作系统的API接口以提取统计信息。有四种可能的方法:
调用适当的外部系统监控命令(系统特定的)和"刮擦"命令的输出。您可以使用Java或C ++执行此操作。
在C ++中(或在Java中使用JNI / JNA ...如果确实必须这样做),请在特定于操作系统的本机API上进行调用,以提供外部系统监视所使用的信息。
在Java中,使用一些现有的第三方库来处理系统特定的JNI / JNA内容。可能的例子包括JavaSysMon和SIGAR ......虽然我无法提出具体建议。
您可以使用Java监控API ......但它们不能提供足够的信息。您可以获取有关此流程资源使用情况和总体平均负载的信息,但您无法获取有关其他流程的信息。
现在上述所有问题(除了可能是最后一个)之外的问题是移植到新平台需要工作。
答案 3 :(得分:0)
CPU使用率是操作系统属性,而不是语言属性。检索它的方法将特定于您正在使用的操作系统(您无法识别)。
此外,“CPU使用率”是一个非常模糊的术语,有多个核心,等等。
答案 4 :(得分:0)
在Java中,您可以使用JavaSysMon
来完成答案 5 :(得分:0)
假设您使用的是Windows系统,则可以使用Windows Management Instrumentation(WMI)。一旦你开始工作它就会很强大。我从未使用过Java。当然,使用C#.NET更容易。 一个很好的链接是WMI info
如果你试试这个,请告诉我。我可能有兴趣帮助你,因为这也是我的兴趣。
答案 6 :(得分:0)
如果您使用的是Linux系统,请考虑使用shell脚本,例如bash。原因是shell脚本对于操作系统调用很有用,比如获取进程ID和用法(pid命令)。与Java或C ++相比,IT技术人员更喜欢使用bash脚本。