转储IBM JVM堆内存
来自:http://publib.boulder.ibm.com/infocenter/javasdk/v1r4m2/index.jsp?topic=%2Fcom.ibm.java.doc.diagnostics.142j9%2Fhtml%2Fenabling_a_heapdump.htmlYou 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
unsetIBM_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 theHeapdump 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, andmake 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+Breakkeys
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
whenno more memory is available. Usually, this snapshot is the most useful
output to help you determinethe cause of an OutOfMemory condition that is
related to the Java heap. It works independently of the IBM_HEAPDUMP
environment variable. So, by default, youget Heapdumps
only when no more heap space is available; you do not get Heapdumps incrashes
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
页:
[1]