在通用 Java 程序中检索进程 ID
获取与正在运行的 Java 程序关联的进程 ID (PID) 一直是一个持续的挑战适合寻求独立于平台的解决方案的开发人员。虽然存在特定于平台的解决方法,但它们缺乏所需的通用性。
RuntimeMXBean 方法
最广泛采用的解决方案引入了 ManagementFactory 类及其 getRuntimeMXBean() 方法。此行通常会生成类似于“12345@hostname”的名称,其中 12345 代表 PID。
但是,需要注意的是,这种方法依赖于未记录的细微差别,并且不能保证在所有 JVM 实现中提供一致的结果。事实上,Java 文档本身明确警告返回的名称可以是任意的,遵循特定于平台的约定:
返回表示正在运行的 Java 虚拟机的名称。返回的名称字符串可以是任意字符串,并且 Java 虚拟机实现可以选择在返回的名称字符串中嵌入特定于平台的有用信息。每个正在运行的虚拟机可以有不同的名称。
Java 9 Process API
在 Java 9 中引入,ProcessHandle API 提供了一种更直接和标准化的替代方案来检索PID:
long pid = ProcessHandle.current().pid();
此方法提供了一种可靠且与平台无关的方法来访问进程 ID现代 Java 版本,消除了与 RuntimeMXBean 方法相关的复杂性。
以上是如何可靠获取Java程序的进程ID?的详细内容。更多信息请关注PHP中文网其他相关文章!