首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >:无法打开套接字文件: HotSpot VM未加载

:无法打开套接字文件: HotSpot VM未加载
EN

Stack Overflow用户
提问于 2018-01-22 10:52:54
回答 2查看 9K关注 0票数 2

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

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

我使用java Oracle 8_101运行linux,但是在回答了这个问题之后,我意识到O.S对于造成这个问题的原因并不重要。

编辑:答案:

如果您遇到此问题,发生此问题的原因是因为我从不同的JVM启动了一个程序,而不是为系统指定的默认JVM。

I.(E)

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

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

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

由于JVM E 144程序<代码>E 146A<代码>E 247E 148(启动器)E 249运行在<<上,JVM <代码>E 144程序<代码>E 146/代码>A<代码>E 247E 148(启动器)E 249>与运行E 150的代码><代码><代码>>代码>>代码>>代码>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-22 12:02:04

造成这一问题的共同原因:

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

Stack Overflow用户

发布于 2020-03-20 11:29:58

问题:不同用户执行jcmd

可能发生的情况是,调用jcmd的用户与运行进程的用户不同。

示例:

  • 用户以root身份调用jcmd
  • 以fancyUser形式运行JVM的用户

解决方案:

在Linux上,当进程正在运行时,尝试使用同一个用户运行jcmd。

如果有这样的情况,就会出现错误。

问题: AppArmor

当启用AppArmor来运行JVM实例(这限制了sys调用)时,打开套接字连接可能会受到限制。

解决方案:

更改AppArmor-过程的轮廓

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48379878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档