Java - AttachNotSupportedException:无法打开套接字文件:HotSpot VM 未加载

Joe*_*Joe 2 java sockets linux jvm agent

尝试将代理 jar 文件附加到在 Java 中运行的另一个进程时,我遇到了异常:

com.sun.tools.attach.AttachNotSupportedException: 无法打开套接字文件:目标进程未响应或未加载 HotSpot VM

我正在运行 linux,使用 java Oracle JDK 8_101,但是在回答这个问题之后,我意识到操作系统对于这个问题的原因并不重要。

编辑: 答案:

如果您遇到此问题,我之所以会遇到此问题,是因为我从不同的 JVM 启动程序,而不是为系统指定的默认 JVM。

IE)

程序 A (启动器)运行在JVM-1 (例如 JDK_8_1,或 JDK_8_1/jdk/jre)上

程序 A (启动器),使用java -jar programB.jar创建一个进程

程序 B (目标)运行在系统的默认 JVM,JVM-2 (例如 JDK_8_2,或 JDK_8_2/jre)上

方案 (启动器) CAN NOT attatch到 程序 (目标),因为JVM方案 (启动器)上运行,不匹配的JVM,其中计划 (目标)在其上运行,从而抛出 COM .sun.tools.attach.AttachNotSupportedException:

apa*_*gin 8

此问题的常见原因:

  • 附加套接字/tmp/.java_pid1234已被删除(例如,通过定期清理 /tmp 的预定作业)。
  • 目标 JVM 以-XX:+DisableAttachMechanism选项启动。
  • 垃圾收集或其他长时间的 VM 操作(例如堆转储)正在进行中。
  • JVM 无法在附加超时内到达安全点。这种情况很少发生,而且问题通常是间歇性的。