【问题标题】:Unable to profile JBoss 5 using jvisualvm无法使用 jvisualvm 分析 JBoss 5
【发布时间】:2011-01-11 17:07:33
【问题描述】:

我在夜间运行我的 Java 应用程序时遇到了一些 java.lang.OutOfMemoryError: GC overhead limit exceeded 错误:

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid6376.hprof ...
Heap dump file created [512149941 bytes in 23.586 secs]
23:34:52,163 WARN  [HDScanner] Scan failed
java.lang.OutOfMemoryError: Java heap space
23:34:52,298 ERROR [ContainerBase] Exception invoking periodic operation: 
java.lang.OutOfMemoryError: Java heap space
23:34:52,321 ERROR [JIoEndpoint] Socket accept failed
java.lang.OutOfMemoryError: Java heap space
    at java.net.ServerSocket.accept(Unknown Source)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)
    at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:310)

如果我打开jvisualvm,我可以看到我确实堆空间不足:

我想对其进行分析以试图弄清楚发生了什么 - 是否存在内存泄漏? 等等。但是,我无法让 jvisualvm 分析器执行任何操作. Profiler 选项卡显示有关启用类共享的警告:

...即使我已将 -Xshare:off flag 添加到我的 VM 参数中:

所以,

  • 关于如何使分析工作的任何想法?
  • 是否值得使用G1GC 而不是......我目前使用的任何 GC?

【问题讨论】:

    标签: java jboss profiling jvisualvm


    【解决方案1】:

    在我看来,您正在 32 位 JVM 上运行 VisualVM,而您的 JBoss 正在 64 位 JVM 上运行。在这种情况下,探查器和其他诸如线程和 CPU 监控之类的东西在 Windows 上无法开箱即用。使用探查器时,您会遇到错误#273,其中探查器未正确启用。您应该执行以下操作:

    1. 下载最新的 64 位 JDK(当前为 JDK 6u23)。它还包含最新版本的 Java VisualVM
    2. 在 VisualVM 中使用内存采样器(它的开销比分析低得多)来查看是否可以发现问题。
    3. 如果这没有帮助,请查看堆转储并尝试找出发生了什么。
    4. 对您的 JBoss 服务器进行内存分析。有关 VisualVM 中的探查器的更多信息,请参阅 Profiling With VisualVM, Part 1Profiling With VisualVM, Part 2

    【讨论】:

    • 我认为你是对的。我的机器上有 32 位和 64 位 JDK,看起来我一直在运行 32 位 JDK 的 VisualVM。现在我只需要时间再玩一遍......
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 2019-10-15
    • 2010-12-29
    • 2014-05-30
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多