如何使用java程序获取PID的内存,CPU使用率?

时间:2011-06-23 04:52:33

标签: java memory 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;
    }

}

通过使用PID我想要计算内存和CPU使用率。有没有办法来获取这些东西?

例如,假设我从方法getProcessId()得到PID为2256。我想计算PID的内存和CPU:2256。

2 个答案:

答案 0 :(得分:0)

如果您在Linux(或其他UNIXy)系统上运行(可能,如果您正在讨论PID),那么在procfs file system下可以提供一大堆内容,假设它可供您使用

您可以在/proc/self中查看当前流程,或/proc/<PID>查看其他流程。

对于内存和CPU使用情况,我将从statmstatusstat开始。有关更详细的说明,请参阅here

答案 1 :(得分:0)

您要显示的信息是特定于平台的。 / proc(procfs)是现代UNIX中的标准机制。 jproc是JNI来处理文件系统。你可能会发现它非常有用。

From Author's blog

  

好像从Java访问kstats   还不够,我最近去过   玩访问过程   信息 - 特别是/ proc   Solaris上的文件系统 - 来自java。   因此诞生了JProc。

     

最终,这个想法就是把它联系起来   用JKstat和SolView来提供更多   完整查看正在发生的事情   Solaris系统。