如何收集堆转储 (IBM JDK)

How to collect heap dump (IBM JDK)

$java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr16fp26-20160508_01(SR16 FP26))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr16fp25-20160413_299433 (JIT enabled, AOT enabled)
J9VM - 20160413_299433
JIT  - r9_20160328_114196
GC   - GA24_Java6_SR16_20160413_1159_B299433)
JCL  - 20160507_01

我们正在使用 IBM JDK,并且面临 OSB Weblogic 托管服务器的高堆利用率问题。

请建议我们如何使用 IBM JDK 收集此 JVM 的堆转储,因为我们需要对其进行分析并解决此 memory/Heap 问题。

要设置的参数

-Xdump:java+heap+system:events=user

默认情况下,在 IBM JVM 中,当应用程序抛出 OOM 时,它可能是本机或堆收集信息。

更多信息请参考这里

http://www-01.ibm.com/support/docview.wss?uid=swg21242497#Help_Options

IBM jvm 默认在 OOM 累积时生成日志。但是,我们可以通过设置以下 JVM 参数来指定应写入哪些日志。

-Xdump:java+system+heap+snap:events=throw+systhrow,filter=java/lang/OutOfMemoryError 

此选项有助于在系统抛出内存不足错误时生成 javacore、systemdump、heapdump 和 snaptrace,它可能是本机错误或 java。