我试图通过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。
答案 0 :(得分:0)
如果您在Linux(或其他UNIXy)系统上运行(可能,如果您正在讨论PID),那么在procfs
file system下可以提供一大堆内容,假设它可供您使用
您可以在/proc/self
中查看当前流程,或/proc/<PID>
查看其他流程。
对于内存和CPU使用情况,我将从statm
,status
和stat
开始。有关更详细的说明,请参阅here。
答案 1 :(得分:0)
您要显示的信息是特定于平台的。 / proc(procfs)是现代UNIX中的标准机制。 jproc是JNI来处理文件系统。你可能会发现它非常有用。
好像从Java访问kstats 还不够,我最近去过 玩访问过程 信息 - 特别是/ proc Solaris上的文件系统 - 来自java。 因此诞生了JProc。
最终,这个想法就是把它联系起来 用JKstat和SolView来提供更多 完整查看正在发生的事情 Solaris系统。