使用 com.sun.tools 附加到当前 VM
Attach to current VM using com.sun.tools
是否可以获取程序当前 运行 所在的虚拟机?我知道有一种 VirtualMachine.list()
方法,但我不知道如何找到正确的方法。我无法搜索特定的 displayName
,因为它是动态的。
还有其他方法可以找到合适的 VM 吗?
要连接的 VM 的 ID 是进程 ID (pid)。所以,你只需要 find pid of the current JVM process.
这是一种方法:
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
String jvmPid = jvmName.substring(0, jvmName.indexOf('@'));
VirtualMachine self = VirtualMachine.attach(jvmPid);
注意:因为 JDK9 附加到当前进程需要设置系统 属性:
-Djdk.attach.allowAttachSelf=true
是否可以获取程序当前 运行 所在的虚拟机?我知道有一种 VirtualMachine.list()
方法,但我不知道如何找到正确的方法。我无法搜索特定的 displayName
,因为它是动态的。
还有其他方法可以找到合适的 VM 吗?
要连接的 VM 的 ID 是进程 ID (pid)。所以,你只需要 find pid of the current JVM process.
这是一种方法:
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
String jvmPid = jvmName.substring(0, jvmName.indexOf('@'));
VirtualMachine self = VirtualMachine.attach(jvmPid);
注意:因为 JDK9 附加到当前进程需要设置系统 属性:
-Djdk.attach.allowAttachSelf=true