| <?xml version="1.0" encoding="UTF-8"?> | |
| <!-- | |
| Copyright (c) 2008, 2023 SAP AG, IBM Corporation and others. | |
| All rights reserved. This program and the accompanying materials | |
| are made available under the terms of the Eclipse Public License 2.0 | |
| which accompanies this distribution, and is available at | |
| https://www.eclipse.org/legal/epl-2.0/ | |
| SPDX-License-Identifier: EPL-2.0 | |
| Contributors: | |
| SAP AG - initial API and implementation | |
| --> | |
| <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA 1.1 Concept//EN" "concept.dtd" > | |
| <concept id="concept_heapdump" xml:lang="en-us"> | |
| <title>Heap Dump</title> | |
| <prolog> | |
| <copyright> | |
| <copyryear year=""></copyryear> | |
| <copyrholder> | |
| Copyright (c) 2008, 2023 SAP AG, IBM Corporation and others. | |
| All rights reserved. This program and the accompanying materials | |
| are made available under the terms of the Eclipse Public License 2.0 | |
| which accompanies this distribution, and is available at | |
| https://www.eclipse.org/legal/epl-2.0/ | |
| </copyrholder> | |
| </copyright> | |
| </prolog> | |
| <conbody> | |
| <p>A heap dump is a snapshot of the memory of a Java process at a certain point of time. | |
| There are different formats for persisting this data, and depending on the format, may | |
| contain different pieces of information; but, in general, the snapshot contains information | |
| about the Java objects and classes in the heap at the moment the snapshot was triggered. | |
| In some cases, a full GC is triggered before the heap dump is written so it contains | |
| information about the remaining objects.</p> | |
| <p>The Memory Analyzer is able to work with HPROF binary heap dumps, | |
| IBM system dumps (old versions require preprocessing), and IBM portable heap dumps (PHD) | |
| from a variety of platforms. | |
| </p> | |
| <p> | |
| Typical information which can be found in heap dumps (depending on the heap dump type): | |
| </p> | |
| <ul> | |
| <li> | |
| All Objects | |
| <p>Class, fields, primitive values and references</p> | |
| </li> | |
| <li> | |
| All Classes | |
| <p>Classloader, name, super class, static fields</p> | |
| <p>When MAT parses IBM system dumps, the size of classes includes some of the amount | |
| of native memory in the Java process (but outside of the Java heap) which is related | |
| to those classes such as native memory for bytecode and JIT compiled code for the class | |
| methods. In some cases, this may cause the total size reported on the Overview pane to | |
| exceed the maximum Java heap size. This calculation may be disabled using an option | |
| in the MAT configuration.</p> | |
| </li> | |
| <li> | |
| Garbage Collection Roots | |
| <p>Objects defined to be reachable by the JVM</p> | |
| </li> | |
| <li> | |
| Thread Stacks and Local Variables | |
| <p>The call-stacks of threads at the moment of the snapshot, and per-frame information about local objects</p> | |
| </li> | |
| </ul> | |
| <p>A heap dump does not contain allocation information so it cannot | |
| resolve questions like who had created the objects and where they | |
| have been created.</p> | |
| </conbody> | |
| <related-links> | |
| <link href="../tasks/acquiringheapdump.dita" type="task"> | |
| <linktext>Acquiring Heap Dumps</linktext> | |
| </link> | |
| </related-links> | |
| </concept> |