[英]java program to get the cpu and memory info of the system
我正在使用此代碼來獲取一些值
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
for (Method method : operatingSystemMXBean.getClass().getDeclaredMethods()) {
method.setAccessible(true);
if (method.getName().startsWith("get")
&& Modifier.isPublic(method.getModifiers())) {
Object value;
try {
value = method.invoke(operatingSystemMXBean);
} catch (Exception e) {
value = e;
} // try
System.out.println("\n \t ");
System.out.println( method.getName() + " = " + value);
}
}
輸出:
getFreeSwapSpaceSize = 413728768
getProcessCpuLoad = -1.0
getProcessCpuTime = 1029606600
getSystemCpuLoad = 0.31576507895572437
getCommittedVirtualMemorySize = 48242688
getFreePhysicalMemorySize = 207011840
getTotalPhysicalMemorySize = 2147483647
getTotalSwapSpaceSize = 4294967295
但是我想分別獲取每個數據,上述輸出值存儲在value
並將其存儲在該單個對象中。 我想在秋千中使用它,以便在每個按鈕中單擊時,我分別獲得上述值。 到目前為止,單擊一個按鈕,我將上述所有信息匯總在一起,但我希望將其單獨存儲,例如:分別分配總物理內存,然后分配系統CPU負載等。
如何修改上述程序,以便可以分別存儲每個值?
對於要放入UI中的每個按鈕,將它們創建為
Button b1 = new Button();
b1.setActionCommand("getTotalSwapSpace");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
try {
Method method = operatingSystemMXBean.getClass().getDeclaredMethod("getTotalSwapSpaceSize", null);
method.setAccessible(true);
Object value = method.invoke(operatingSystemMXBean, new Object[]{});
System.out.println(" Value = " + value);
} catch (Exception e1) {
e1.printStackTrace();
}
}
});
顯示返回的值。 已更改原始代碼,請嘗試此操作。
對於CPU使用OperatingSystemMXBean類
OperatingSystemMXBean operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
int availableProcessors = operatingSystemMXBean.getAvailableProcessors();
long prevUpTime = runtimeMXBean.getUptime();
long prevProcessCpuTime = operatingSystemMXBean.getProcessCpuTime();
double cpuUsage;
try
{
Thread.sleep(500);
}
catch (Exception ignored) { }
operatingSystemMXBean = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long upTime = runtimeMXBean.getUptime();
long processCpuTime = operatingSystemMXBean.getProcessCpuTime();
long elapsedCpu = processCpuTime - prevProcessCpuTime;
long elapsedTime = upTime - prevUpTime;
cpuUsage = Math.min(99F, elapsedCpu / (elapsedTime * 10000F * availableProcessors));
System.out.println("Java CPU: " + cpuUsage);
對於內存,請使用java.lang.management中的Runtime類
long total = Runtime.getRuntime().totalMemory();
long used = Runtime.getRuntime().totalMemory()
- Runtime.getRuntime().freeMemory();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.