我想在我的 Unix 系统上获得简单的结果,例如总内存、可用内存、CPU 使用率等。目前我正在使用 shell 命令top。
Java中是否有任何功能可以做同样的事情?
我的目标是通过 Google Gauge Charts 在网络应用程序中显示结果。很明显,我使用 Java 会更容易,而不是在 Java 中执行 Unix 命令。
提前致谢
我想在我的 Unix 系统上获得简单的结果,例如总内存、可用内存、CPU 使用率等。目前我正在使用 shell 命令top。
Java中是否有任何功能可以做同样的事情?
我的目标是通过 Google Gauge Charts 在网络应用程序中显示结果。很明显,我使用 Java 会更容易,而不是在 Java 中执行 Unix 命令。
提前致谢
OperatingSystemMXBean operatingSystemMXBean =
ManagementFactory.getOperatingSystemMXBean();
for (Method method: operatingSystemMXBean.getClass ().getMethods ())
{
method.setAccessible (true);
String methodName = method.getName ();
if (methodName.startsWith ("get")
&& Modifier.isPublic (method.getModifiers ())
&& OperatingSystemMXBean.class.isAssignableFrom (
method.getDeclaringClass ())) {
try
{
System.out.println (
methodName.substring (3) + ": " +
method.invoke (operatingSystemMXBean));
}
catch (Throwable ex)
{
// Ignore
}
}
}
在不同的操作系统和 Java 版本上,输出是不同的。这是 Linux 上 JDK 1.7 的输出:
FreeSwapSpaceSize: 2172059648
FreePhysicalMemorySize: 1757573120
CommittedVirtualMemorySize: 26741071872
MaxFileDescriptorCount: 8192
OpenFileDescriptorCount: 4
ProcessCpuLoad: 2.0251808355598717E-10
ProcessCpuTime: 60000000
SystemCpuLoad: 0.03673989450920194
TotalPhysicalMemorySize: 101439979520
TotalSwapSpaceSize: 4294950912
Name: Linux
ObjectName: java.lang:type=OperatingSystem
AvailableProcessors: 12
Arch: amd64
SystemLoadAverage: 1.86
Version: 2.6.32.54-0.3-default
与命令上报的值SystemLoadAverage相同。load averagetop