转储IBM JVM堆内存

来自:http://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.142j9%2Fhtml%2Fenabling_a_heapdump.html

 

You can generate a Heapdump from a running JVM in either of two ways:

  • Explicit generation
  • JVM-triggered generation

When the Java™ heap is exhausted (that is, the OutOfMemory condition is encountered and the resulting exception is not caught or handled by the application), JVM-triggered generation is enabled by default, as are Heapdumps that are generated by other programming methods. To enable signal-based Heapdumps, set the IBM_HEAPDUMP or IBM_HEAP_DUMP environment variable to any value,

export IBM_HEAPDUMP=<any_value>
export IBM_HEAP_DUMP=<any_value>

or set the appropriate JAVA_DUMP_OPTS before you start the Java process. You can also use the -Xdump agent option to get more fine-grained control over Heapdumps. See Using dump agents for more information.

To display on JVM startup the conditions (if any) that will generate a Heapdump (or javadump or systemdump), you can use -Xdump:what . See Using dump agents for more information.

To disable generation of a Heapdump, on platforms other than Windows® use:

unset IBM_HEAPDUMP  
unset  IBM_HEAP_DUMP

On Windows, use:

set IBM_HEAPDUMP= 
set IBM_HEAP_DUMP=

Explicit generation of a Heapdump

You can explicitly generate a Heapdump in the following ways:

  • By sending a signal to the JVM from the operating system
  • By using the HeapDump() method inside Java code that is being executed
  • By using the JVMRI to request a Heapdump from a loaded agent

You can explicitly request a Heapdump in the same way as a Javadump. Before the Heapdump starts, the heap is locked and remains locked until the whole Heapdump file is written to disk. This operation can affect the behavior of your Java application, and make it unresponsive while the dump is being produced.

For Linux and AIX®, send the JVM the signal SIGQUIT (kill -QUIT , or Ctrl+\ in the console window).

For Windows, generate a SIGINT (press the Ctrl+Break keys simultaneously).

You can explicitly request a Heapdump from a Java method. The class com.ibm.jvm.Dump contains a static HeapDump() method that causes Java code to initiate a Heapdump. To use the methods in the com.ibm.jvm.Dump class, you must have the underlying VM Reliability, Availability, and Serviceability Interface (JVMRI) enabled, by setting -Xtrace on the Java command line. For more information about JVMRI, see Using the Reliability, Availability, and Serviceability Interface .

Triggered generation of a Heapdump

The following events automatically trigger the JVM to produce a Heapdump (if enabled):

  • An OutOfMemory or heap exhaustion condition occurs and the resulting exception is not caught or handled by the application
  • If Heapdumps are enabled, they are normally produced immediately before a Javadump.

The first option is enabled by default, and you can see it with -Xdump:what . It gives a snapshot of the Java heap when no more memory is available. Usually, this snapshot is the most useful output to help you determine the cause of an OutOfMemory condition that is related to the Java heap. It works independently of the IBM_HEAPDUMP environment variable. So, by default, you get Heapdumps only when no more heap space is available; you do not get Heapdumps in crashes or through a signal to the JVM. You can disable this feature, and a similar one for Javadumps, by using IBM_HEAPDUMP_OUTOFMEMORY=FALSE and IBM_JAVADUMP_OUTOFMEMORY=FALSE respectively.

Sometimes an application will catch and handle an OutOfMemory condition, in which case no heapdumps will be taken. You can force heapdump generation for any handled OutOfMemory conditions, by setting IBM_HEAPDUMP_OUTOFMEMORY=TRUE and IBM_JAVADUMP_OUTOFMEMORY=TRUE respectively.

Enabling text formatted ("classic") Heapdumps

The generated Heapdump is by default in the binary, platform-independent, phd format, which can be examined using the available tooling (see Available tools for processing Heapdumps ). However, it is sometimes useful to have an immediately readable view of the heap. You can obtain this view by using the opts= stanza with -Xdump:heap (see Using dump agents ) or by the existence of an environment variable:

  • IBM_JAVA_HEAPDUMP_TEST , which allows you to perform the equivalent of opts=PHD+CLASSIC
  • IBM_JAVA_HEAPDUMP_TEXT , which allows the equivalent of opts=CLASSIC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值