在C++或Java中,有没有办法获取CPU使用率
In C++ or Java is there a way to get the CPU usage?
我想写一个小程序,只是为了将CPU使用率显示为百分比,就像任务管理器一样。我知道中级C++和Java。有没有办法用这两种语言做到这一点?如果是这样,也许是一个简短的例子?我看到了C++命令的某些页面,但我无法分辨它的正面或反面。
我在一台计算机上使用Windows 7,在另一台计算机上使用XP。至于多核响应,我只想像任务管理器一样显示 CPU 使用率百分比,即使使用多核处理器也是如此。
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());
"windows.h"中提供了一些系统调用函数,例如 GetProcessorInfo()、CallNTPowerInformation()、GetTickCount()、QueryPerformanceFrequency()、QueryPerformanceCounter() 等。你可以用谷歌搜索它们,或者在MSDN中找到它们。希望这个答案能对你有所帮助。
答案将是特定于平台的,并且在 Java 和C++情况下有所不同。 在某种程度上,您需要与特定于操作系统的 API 交互以提取统计信息。 有四种可能的方法:
-
调用适当的外部系统监视命令(系统特定)并"抓取"命令的输出。 您可以从 Java 或 C++ 执行此操作。
-
在C++(或在Java中使用JNI/JNA...如果确实有必要),请调用特定于操作系统的本机 API,这些 API 提供外部系统监视使用的信息。
-
在Java中,使用一些现有的第三方库来处理系统特定的JNI/JNA内容。 可能的例子包括JavaSysMon和SIGAR ...虽然我不能提出具体建议。
-
您可以使用 Java 监控 API ...但他们没有提供足够的信息。 可以获取有关此进程资源使用情况和总体负载平均值的信息,但无法获取有关其他进程的信息。
现在,上述所有问题(可能最后一个除外)是移植到新平台需要工作。
CPU 使用率是操作系统属性,而不是语言属性。 检索它的方式将特定于您正在使用的操作系统(您无法识别)。
此外,"CPU使用率"不再是一个非常模糊的术语,具有多个内核等。
在Java中,你可以使用JavaSysMon来做到这一点
假设您使用的是 Windows 系统,则可以使用 Windows Management Instrumentation (WMI)。一旦你让它工作,它就会很强大。我从来没有用Java做过。当然,使用 C# .NET 更容易。一个好的链接是WMI信息
如果你尝试这个,请告诉我。我可能有兴趣帮助你,因为这也是我的兴趣。
如果你使用的是Linux系统,请考虑使用shell脚本,如bash。原因是 shell 脚本对于操作系统调用非常强大,例如获取进程 ID 和使用情况(pid 命令)。 IT技术人员比Java或C++更熟悉bash脚本。
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- 从 C++11 代码中获取系统内存和 CPU 使用率
- WIN32 C :获取过程CPU亲和力
- 使用 PID 获取内存和 CPU 使用率
- 如何在windows上获取cpu上的实际内核数量
- 在 Ubuntu 中获取 CPU 时间
- 在C++或Java中,有没有办法获取CPU使用率
- 如何获取 Windows 数据,如 CPU 使用率等
- 我已经安装了 GPERFtools-2.0,但我无法获取 CPU 配置文件统计信息
- 如何获取 WinRT 上的逻辑 CPU 数量
- 在c++/windows中获取特定进程的当前cpu使用情况
- 在获取CPU频率方面需要一些帮助
- 获取可变长度操作码和CPU计时
- 如何使用c++在WMI中获取CPU使用率
- 获取当前进程CPU占用率
- 在linux ubuntu 12.10和AMD FX 4100四核上获取CPU温度
- 获取CPU节拍和测量时间
- 使用c++获取Linux中进程的RAM和CPU使用情况
- 如何使用 Sigar 库获取C++ CPU 使用率百分比