Heap Dumping¶
XML Schema¶
Below is the XML schema for heap dumps.
<?xml version='1.0' encoding='UTF-8'?>
<!--
Schema
Copyright 2012 IS2T. All rights reserved.
IS2T PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- root element: heap -->
<xs:element name="heap">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="class"/>
<xs:element ref="object"/>
<xs:element ref="array"/>
<xs:element ref="stringLiteral"/>
</xs:choice>
</xs:complexType>
</xs:element>
|
<!-- class element -->
<xs:element name="class">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field"/>
</xs:choice>
<xs:attribute name="name" type="xs:string" use = "required"/>
<xs:attribute name="id" type="xs:string" use = "required"/>
<xs:attribute name="superclass" type="xs:string"/>
</xs:complexType>
</xs:element>
|
<!-- object element-->
<xs:element name="object">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field"/>
</xs:choice>
<xs:attribute name="id" type="xs:string" use = "required"/>
<xs:attribute name="class" type="xs:string" use = "required"/>
<xs:attribute name="createdAt" type="xs:string" use = "optional"/>
<xs:attribute name="createdInThread" type="xs:string" use = "optional"/>
<xs:attribute name="createdInMethod" type="xs:string"/>
<xs:attribute name="tag" type="xs:string" use = "required"/>
</xs:complexType>
</xs:element>
|
<!-- array element-->
<xs:element name="array" type = "arrayTypeWithAttribute"/>
<!-- stringLiteral element-->
<xs:element name="stringLiteral">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs ="4" maxOccurs="4" ref="field "/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use = "required"/>
<xs:attribute name="class" type="xs:string" use = "required"/>
</xs:complexType>
</xs:element>
|
<!-- field element: child of class, object and stringLiteral-->
<xs:element name="field">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use = "required"/>
<xs:attribute name="id" type="xs:string" use = "optional"/>
<xs:attribute name="value" type="xs:string" use = "optional"/>
<xs:attribute name="type" type="xs:string" use = "optional"/>
</xs:complexType>
</xs:element>
<xs:simpleType name = "arrayType">
<xs:list itemType="xs:integer"/>
</xs:simpleType>
<!-- complex type "arrayTypeWithAttribute". type of array element-->
<xs:complexType name = "arrayTypeWithAttribute">
<xs:simpleContent>
<xs:extension base="arrayType">
<xs:attribute name="id" type="xs:string" use = "required"/>
<xs:attribute name="class" type="xs:string" use = "required"/>
<xs:attribute name="createdAt" type="xs:string" use = "optional"/>
<xs:attribute name="createdInThread" type="xs:string" use = "optional"/>
<xs:attribute name="createdInMethod" type="xs:string" use = "optional"/>
<xs:attribute name="length" type="xs:string" use = "required"/>
<xs:attribute name="elementsType" type="xs:string" use = "optional"/>
<xs:attribute name="type" type="xs:string" use = "optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
|
File Specification¶
Types referenced in heap dumps are represented in the internal classfile
format (Internal classfile Format for Types). Fully qualified names
are names separated by the / separator (For example, a/b/C
).
Type = <BaseType> | <ClassType> | <ArrayType>
BaseType: B(byte), C(char), D(double), F(float), I(int), J(long), S(short), Z(boolean),
ClassType: L<ClassName>;
ArrayType: [<Type>
Tags used in the heap dumps are described in the table below.
Tags | Attributes | Description |
heap |
The root element. | |
class |
Element that references a Java class. | |
name |
Class type (<ClassType> ) |
|
id |
Unique identifier of the class. | |
superclass |
Identifier of the superclass of this class. | |
object |
Element that references a Java object. | |
id |
Unique identifier of this object. | |
class |
Fully qualified name of the class of this object. | |
array |
Element that references a Java array. | |
id |
Unique identifier of this array. | |
class |
Fully qualified name of the class of this array. | |
elementsType |
Type of the elements of this array. | |
length |
Array length. | |
stringLiteral |
Element that references a java.lang.String literal. |
|
id |
Unique identifier of this object. | |
class |
Id of java.lang.String class. |
|
field |
Element that references the field of an object or a class. | |
name |
Name of this field. | |
id |
Object or Array identifier, if it holds a reference. | |
type |
Type of this field, if it holds a base type. | |
value |
Value of this field, if it holds a base type. |