2011-06-23 58 views
1

我想通過Java程序獲取PID的內存和CPU使用情況。如何使用java程序獲取PID的內存,CPU使用率?

我可以通過下面的代碼來獲取當前程序的PID:

private static int getProcessId() 
{ 

String name = ManagementFactory.getRuntimeMXBean().getName(); 

StringBuffer pid = new StringBuffer(); 
    for (int i = 0, l = name.length(); i < l; i++) { 
    if (Character.isDigit(name.charAt(i))) { 
     pid.append(name.charAt(i)); 
    } else if (pid.length() > 0) { 
     break; 
    } 
    } 
    try { 
    return Integer.parseInt(pid.toString()); 
    } catch (NumberFormatException e) { 
    return 0; 
    } 

} 

通過使用我要計算的內存和CPU使用的PID。有什麼方法可以獲得這些東西嗎?

例如,假設我從方法getProcessId()獲得PID爲2256。我想爲PID:2256計算內存和CPU。

回答

0

如果您在Linux(或其他UNIXy)系統上運行(可能是,如果您在談論PID),則會有一大堆東西根據procfs file system提供,假定它可用。

您可以在當前流程的/proc/self或另一個流程的/proc/<PID>

對於內存和CPU使用率,我會從statmstatusstat開始。有關更詳細的描述,請參見here

0

要顯示的信息是平臺特定的。/proc(procfs)是現代UNIX中的標準機制。 jproc是JNI來處理文件系統。你可能會覺得它非常有用。

From Author's blog

彷彿從Java 訪問的kstats是不夠的,我最近一直 與訪問過程 信息播放 - 在Solaris專門在/ proc文件系統 - 從Java。 因此出生JProc。

的想法,最終是這個 與JKstat和SOLVIEW鏈接給發生的事情一 Solaris系統上更 完整視圖。

相關問題