Java “获取窗口”;“平均负荷”;在爪哇

Java “获取窗口”;“平均负荷”;在爪哇,java,windows,java-native-interface,Java,Windows,Java Native Interface,我目前正在编写一个Java应用程序,需要查看它所运行的机器的“负载”情况。在*nix上,负载平均数除以处理器数完全符合要求,我们使用ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()检索负载平均数。不幸的是,在Windows上返回-1,因为该调用显然太“昂贵”,无法频繁调用。在纯Java或通过JNI检索类似Windows指标(如处理器队列长度或CPU利用率)的最简单方法是什么?尝试使用免费的Hyper-SIGAR

我目前正在编写一个Java应用程序,需要查看它所运行的机器的“负载”情况。在*nix上,负载平均数除以处理器数完全符合要求,我们使用
ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage()
检索负载平均数。不幸的是,在Windows上返回-1,因为该调用显然太“昂贵”,无法频繁调用。在纯Java或通过JNI检索类似Windows指标(如处理器队列长度或CPU利用率)的最简单方法是什么?

尝试使用免费的Hyper-SIGAR API。它是用于调用系统信息的跨平台API。它对Windows/Linux/Unix/Mac/etc使用JNI

我用它编写了一个JNLP任务管理器/信息监视器,它是一个不错的API

源代码:


您可以使用WMI检索Windows上的CPU利用率。从Java访问WMI的一些代码和文档似乎可用。

如果您在win32环境中运行,也可以使用Eclipse SWT执行此任务:


甚至更简单,使用wmic接口!我一直喜欢在代码中执行而不是调用外部程序,但wmic似乎很有用。WMI看起来就像我想要的。我不认为我会走J-Integra的路线,尽管-我正在考虑使用来自的代码,尽管我仍然在寻找一些可以通过编程调用它的东西(这一个可以动态创建VBScript)。@Anders,你能告诉我怎么做吗?J-integra不是自由软件。@eric2323223
wmic
是WMI的本机Windows脚本接口(如果主机上存在WMI,则
wmic
),只需通过Java应用程序调用即可。