如何使用 java 程序获取 PID 的内存、CPU 使用率?
Posted
技术标签:
【中文标题】如何使用 java 程序获取 PID 的内存、CPU 使用率?【英文标题】:How to get PID's Memory, CPU usage using java program? 【发布时间】:2011-06-23 04:52:32 【问题描述】:我正在尝试通过 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。
【问题讨论】:
【参考方案1】:如果您在 Linux(或其他 UNIXy)系统上运行(可能,如果您在谈论 PID),假设您可以使用 procfs
file system 下提供的一大堆东西。
您可以在/proc/self
中查找当前进程,或在/proc/<PID>
中查找另一个进程。
对于内存和 CPU 使用率,我将从 statm
、status
和 stat
开始。有关更详细的说明,请参阅here。
【讨论】:
【参考方案2】:您要显示的信息是特定于平台的。 /proc (procfs) 是现代 UNIX 中的标准机制。 jproc 是 JNI 到 proc 文件系统。您可能会发现它非常有用。
From Author's blog:
好像从 Java 访问 kstats 还不够,我最近去过 玩访问进程 信息 - 特别是 /proc Solaris 上的文件系统 - 来自 java。 JProc 就这样诞生了。
最终的想法是将这个 使用 JKstat 和 SolView 提供更多信息 完整的视图 Solaris 系统。
【讨论】:
以上是关于如何使用 java 程序获取 PID 的内存、CPU 使用率?的主要内容,如果未能解决你的问题,请参考以下文章