我想在Unix系统上使用简单的结果,如总内存,可用内存,CPU使用率等。
目前我正在使用shell命令top
。
Java中是否有用于执行相同操作的功能?
我的目标是通过Google Gauge Charts在网络应用中显示结果。很明显,使用Java会更容易,而不是从Java中执行Unix命令。
提前致谢
答案 0 :(得分:4)
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 average
命令报告的top
相同。