如何使用Java获取进程信息?

3

我有一个进程的进程id。我能获取该进程的CPU%,内存,exe名称等其他信息吗?

我发现没有内置函数可以获取所有这些信息。如何使用Native实现这一功能?

请帮帮我。


1
不要使用Java API进行操作。你需要一个JNI/JNA(本地)解决方案。 - MadProgrammer
3个回答

2

Java是一个平台无关的平台。它的规范没有定义任何关于pid的内容。因此,您无法找到一种通用/便携式的方式来操作pid。虽然这不是一个好的实践,但您可以为特定平台制作一个实现。

在Windows上,您可以使用tasklist获取完整的PID列表并过滤出您想要的PID。

在Unix / Linux系统上,您可以使用ps ax | grep获取您的信息。


1
你可以从操作系统中获取所有这些信息,例如在Windows中的任务管理器。Java能为你提供的是线程转储(thread dump)等功能:
%JAVA_HOME%/bin/jstack.exe PID >stack.txt

或者,堆转储(heap dump):
%JAVA_HOME%/bin/jmap.exe -dump:format=b,file=heap.bin PID

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接