Text (classic) Heapdump file format

The text or classic Heapdump is a list of all object instances in the heap, including object type, size, and references between objects, in a human-readable format.

Header record

The header record is a single record containing a string of version information.

// Version: <version string containing SDK level, platform and JVM build level>
Example:
// Version: J2RE 6.0 IBM J9 2.5 Linux x86-32 build 20081016_024574_lHdRSr

Object records

Object records are multiple records, one for each object instance on the heap, providing object address, size, type, and references from the object.

<object address, in hexadecimal> [<length in bytes of object instance, in decimal>]
OBJ <object type> <class block reference, in hexadecimal>
<heap reference, in hexadecimal <heap reference, in hexadecimal> ...

The object address and heap references are in the heap, but the class block address is outside the heap. All references found in the object instance are listed, including those that are null values. The object type is either a class name including package or a primitive array or class array type, shown by its standard JVM type signature, see Java VM type signatures. Object records can also contain additional class block references, typically in the case of reflection class instances.

Examples:

An object instance, length 28 bytes, of type java/lang/String:
0x00436E90 [28] OBJ java/lang/String
A class block address of java/lang/String, followed by a reference to a char array instance:
0x415319D8 0x00436EB0
An object instance, length 44 bytes, of type char array:
0x00436EB0 [44] OBJ [C
A class block address of char array:
0x41530F20
An object of type array of java/util/Hashtable Entry inner class:
0x004380C0 [108] OBJ [Ljava/util/Hashtable$Entry;
An object of type java/util/Hashtable Entry inner class:
0x4158CD80 0x00000000 0x00000000 0x00000000 0x00000000 0x00421660 0x004381C0 
0x00438130 0x00438160 0x00421618 0x00421690 0x00000000 0x00000000 0x00000000 
0x00438178 0x004381A8 0x004381F0 0x00000000 0x004381D8 0x00000000 0x00438190 
0x00000000 0x004216A8 0x00000000 0x00438130 [24] OBJ java/util/Hashtable$Entry
A class block address and heap references, including null references:
0x4158CB88 0x004219B8 0x004341F0 0x00000000 

Class records

Class records are multiple records, one for each loaded class, providing class block address, size, type, and references from the class.
<class block address, in hexadecimal> [<length in bytes of class block, in decimal>]
CLS <class type>
<class block reference, in hexadecimal> <class block reference, in hexadecimal> ...
<heap reference, in hexadecimal> <heap reference, in hexadecimal>...

The class block address and class block references are outside the heap, but the class record can also contain references into the heap, typically for static class data members. All references found in the class block are listed, including those that are null values. The class type is either a class name including package or a primitive array or class array type, shown by its standard JVM type signature, seeJava VM type signatures.

Examples:

A class block, length 32 bytes, for class java/lang/Runnable:
0x41532E68 [32] CLS java/lang/Runnable
References to other class blocks and heap references, including null references:
0x4152F018 0x41532E68 0x00000000 0x00000000 0x00499790
A class block, length 168 bytes, for class java/lang/Math:
0x00000000 0x004206A8 0x00420720 0x00420740 0x00420760 0x00420780 0x004207B0 
0x00421208 0x00421270 0x00421290 0x004212B0 0x004213C8 0x00421458 0x00421478 
0x00000000 0x41589DE0 0x00000000 0x4158B340 0x00000000 0x00000000 0x00000000 
0x4158ACE8 0x00000000 0x4152F018 0x00000000 0x00000000 0x00000000 

Trailer record 1

Trailer record 1 is a single record containing record counts.

// Breakdown - Classes: <class record count, in decimal>,
Objects: <object record count, in decimal>,
ObjectArrays: <object array record count, in decimal>,
PrimitiveArrays: <primitive array record count, in decimal>
Example:
// Breakdown - Classes: 321, Objects: 3718, ObjectArrays: 169, 
PrimitiveArrays: 2141

Trailer record 2

Trailer record 2 is a single record containing totals.

// EOF:  Total 'Objects',Refs(null) :
<total object count, in decimal>,
<total reference count, in decimal>
(,total null reference count, in decimal>)
Example:
// EOF:  Total 'Objects',Refs(null) : 6349,23240(7282)

Java VM type signatures

The Java™ VM type signatures are abbreviations of the Java types are shown in the following table:

Java VM type signatures Java type
Z boolean
B byte
C char
S short
I int
J long
F float
D double
L <fully qualified-class> ; <fully qualified-class>
[ <type> <type>[ ] (array of <type>)
( <arg-types> ) <ret-type> method


© Copyright IBM Corporation 2005, 2010. All Rights Reserved.
© Copyright Sun Microsystems, Inc. 1997, 2007, 901 San Antonio Rd., Palo Alto, CA 94303 USA. All rights reserved.
US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
This information center is powered by Eclipse technology. (http://www.eclipse.org/)