【问题标题】:How to get process information using pid with Java?如何使用 pid 和 Java 获取进程信息?
【发布时间】:2013-06-12 07:17:28
【问题描述】:

我有一个进程的进程 ID。能否获取有关进程的其他信息,例如 CPU%、内存、exe 名称等?

我已经看到没有内置函数可以获取所有这些。如何用 Native 做到这一点?

请帮忙。

【问题讨论】:

  • 不通过 Java API。您将需要 JNI/JNA(本机)解决方案

标签: java process native jna


【解决方案1】:

嗯,您可以从操作系统获得所有这些信息。例如,Windows 中的任务管理器

Java 可以为您提供例如线程转储

%JAVA_HOME%/bin/jstack.exe PID >stack.txt

或者,堆转储

%JAVA_HOME%/bin/jmap.exe -dump:format=b,file=heap.bin PID

【讨论】:

    【解决方案2】:

    Java 是一个独立于平台的平台。它的规范没有定义任何关于 pid 的内容。所以你找不到一种通用/便携的方式来操作 pid。虽然这不是一个好的做法,但您可以针对特定平台进行实施。

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

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

    【讨论】:

      【解决方案3】:

      据我所知,Java 内置没有为此公开的 API:

      但您可以将 java 与 OS 本机命令结合使用来获取信息。

      例如

      Windows 探索(任务列表):http://msdn.microsoft.com/en-us/library/windows/hardware/ff545415(v=vs.85).aspx

      Unix 探索(ps):Shell script to get the process ID on Linux

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-05
        • 2015-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-13
        相关资源
        最近更新 更多