需要一個api來獲取CPU &我的當前進程或應用程序在java中的內存使用情況。 我得到了一個API來獲取完整的系統的CPU使用率,但我需要特別處理。(getSystemCpuLoad
OperatingSystemMXBean
接口)Java api獲取我的java應用程序的CPU和內存使用情況
在此先感謝
需要一個api來獲取CPU &我的當前進程或應用程序在java中的內存使用情況。 我得到了一個API來獲取完整的系統的CPU使用率,但我需要特別處理。(getSystemCpuLoad
OperatingSystemMXBean
接口)Java api獲取我的java應用程序的CPU和內存使用情況
在此先感謝
有一個好消息和一個壞消息。壞消息是,使用純Java不可能以編程方式查詢CPU使用情況。這根本就沒有API。建議的替代方案可以使用Runtime.exec()來確定JVM的進程ID(PID),調用外部特定於平臺的命令(如ps),並解析其輸出以獲取感興趣的PID。但是,這種方法最多是脆弱的。
然而好消息是,可靠的解決方案可以通過跨越Java並編寫一些通過Java Native Interface(JNI)與Java應用程序集成的C代碼行來完成。
如果你想要我可以幫助你實現這一目標。 –
如果您使用不同的OperatingSystemMXBean
,則可以獲取該數據。 檢查進口包裝:com.sun.management.OperatingSystemMXBean。
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class Test {
public static void main(String[] args) {
OperatingSystemMXBean operatingSystemMXBean =
(OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getProcessCpuLoad());
}}
如果我沒有記錯的話,這個類是包含在rt.jar中,出現在你的Java運行時。
這取決於你的內存使用情況;你的意思是駐留內存,虛擬內存,堆中使用的活動對象,這些可以是非常不同的。 –
我的意思是堆在使用中。 –
這可以使用運行時獲得。 totalMemory() - freeMemory()注意,這並不能讓你知道堆的完整程度,只有距離下一個完整的GC有多遠。 –