簡體   English   中英

如何使用Java程序獲取PID的內存,CPU使用率?

[英]How to get PID's Memory, CPU usage using java program?

我正在嘗試通過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;
    }

}

通過使用PID,我想計算內存和CPU使用率。 有什么方法可以得到這些東西嗎?

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

如果您在Linux(或其他UNIXy)系統上運行(很可能是在談論PID),那么假定您可以使用procfs文件系統 ,那么會有很多東西可用。

您可以在/proc/self中瀏覽當前進程,或在/proc/<PID>中瀏覽另一進程。

對於內存和CPU使用率,我將從statmstatusstat 請參閱此處以獲得更詳細的描述。

您要顯示的信息是特定於平台的。 / proc(procfs)是現代UNIX中的標准機制。 jproc是proc文件系統的JNI。 您可能會發現它非常有用。

來自作者的博客

好像從Java中訪問kstats還不夠,我最近一直在嘗試從Java中訪問進程信息-特別是Solaris上的/ proc文件系統。 JProc就這樣誕生了。

最終的想法是將其與JKstat和SolView鏈接起來,以更全面地了解Solaris系統上正在發生的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM