无法使用jvisualvm配置JBoss 5

时间:2011-01-11 17:07:34

标签: java jboss profiling jvisualvm

我在一夜之间运行我的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,我可以看到我确实没有堆空间:

monitor

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

profiler

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

overview

所以,

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

1 个答案:

答案 0 :(得分:4)

在我看来,您在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