You need to know that there are "system" dumps (mainly OS kernel files) and a heap, as well as portable heaps (PHDs). Later ones are less useful as they do not contain actual data. By default, they are enabled.
On AIX or Linux, you usually configure -Xdump:system (short for -Xdump:system:events=gpf+user ) to allow kill -3 <pid> to start a bunch of heaps.
By the way, you can use the default options kill -ABRT <pid> . However, this will interrupt your JVM.
Run java -Xdump:what to see your default values, for example:
> /usr/java6/bin/java -Xdump:what -version Registered dump agents ---------------------- -Xdump:system: events=gpf+abort+traceassert, label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp, range=1..0, priority=999, request=serial ---------------------- ... java version "1.6.0" Java(TM) SE Runtime Environment (build pap3260sr9fp2-20110627_03(SR9 FP2))
When enabling system dumps:
> /usr/java6/bin/java -Xdump:system -Xdump:what -version Registered dump agents ---------------------- -Xdump:system: events=gpf+user+abort+traceassert, label=/home/u0002824/core.%Y%m%d.%H%M%S.%pid.%seq.dmp, range=1..0, priority=999, request=serial ---------------------- -Xdump:heap: events=systhrow, filter=java/lang/OutOfMemoryError, label=/home/u0002824/heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd, range=1..4, priority=500, request=exclusive+compact+prepwalk, opts=PHD ---------------------- -Xdump:java: events=gpf+user+abort+traceassert, label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt, range=1..0, priority=400, request=exclusive+preempt ---------------------- -Xdump:java: events=systhrow, filter=java/lang/OutOfMemoryError, label=/home/u0002824/javacore.%Y%m%d.%H%M%S.%pid.%seq.txt, range=1..4, priority=400, request=exclusive+preempt ---------------------- -Xdump:snap: events=gpf+abort+traceassert, label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc, range=1..0, priority=300, request=serial ---------------------- -Xdump:snap: events=systhrow, filter=java/lang/OutOfMemoryError, label=/home/u0002824/Snap.%Y%m%d.%H%M%S.%pid.%seq.trc, range=1..4, priority=300, request=serial ---------------------- ...
Remember to run jre/bin/jextract in the file . * .dmp .