我在MAC OSX山狮上遇到了TomEE 1.5.1和VisualVM 1.7.0_09的一个非常奇怪的问题。

TomEE加载了一些webapp之后。使用VisualVM连接本地TomEE进程需要花费很长时间,并且连接后gc按钮被禁用,我无法进行堆转储。 VisualVM的日志显示一些错误。

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
    at sun.tools.attach.BsdVirtualMachine.<init>(BsdVirtualMachine.java:90)
    at sun.tools.attach.BsdAttachProvider.attachVirtualMachine(BsdAttachProvider.java:63)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213)
    at com.sun.tools.visualvm.attach.AttachModelImpl.getVirtualMachine(AttachModelImpl.java:104)
Caused: java.io.IOException: Unable to open socket file: target process not responding or HotSpot VM not loaded

tmp文件夹中未创建的.java_pid<pid>文件。

但是,如果我在启动TomEE之后且加载任何Web应用程序之前使用VisualVM连接TomEE,则会创建.java_pid<pid>文件,VisualVM将立即连接到它,并且堆转储有效。

另一个解决方法是修改catalina.sh以将tools.jar添加到ClassPath并删除openejb javaagent,然后在TomEE完全启动后可以正常工作。

无法在ubuntu机器上复制。

最佳答案

jvm可能内存不足。我看过很多次了。
尝试:

  • increasing memory limits
  • 将VisualVM连接到jvm。
  • 部署您的应用程序。
  • 并运行内存采样器,探查器或堆转储以诊断问题。您可能有内存泄漏。如果遇到内存问题,堆转储是最安全的方法。您还可以take heap dump using command line并在以后的VisualVM中对其进行分析。

  • 另外,请确保您的系统没有内存不足。

    关于java - VisualVM连接到本地TomEE的速度非常慢,无法进行堆转储,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13678638/

    10-11 00:18