Viewing the Objects in the Heap

With the exception of primitive types, all objects in Java are allocated and held in a large area of memory referred to as the heap.  The garbage collector within the JVM is responsible for making unused memory within the heap available to applications.  This process requires time and processor power.  In addition, inadvertant object references in an application, can cause heap objects to be held when no longer necessary.  The heap dump view provides insight into the current contents of the heap of the running application.

At this time, the view provides a tree view showing the relationships between the heap objects.  If unintended references are found in this view, alter the application to remove those references when no longer necessary.

Heap Dump View
(Click to enlarge)

Workaround for JDK bug 4719788

The heap dump view will not work with versions 1.4.x of the JDK prior to 1.4.2.  Bug 4719788 (more information available at documents a change that was made to the HPROF profiler interface that breaks the binary data exchange used by jMechanic.  The official bug fix is slated to be fixed in "mantis" (version 1.4.2) to be released
in "early 2003".

In the meantime, it appears that versions of the hprof library from 1.3.x releases work with the newer JDK.  A possible workaround is to replace the 1.4.x versions of the hprof library with the most recent version from 1.3.x.  To do this on the Win32 platform:
Although this technique was used during the development of the heap dump view, making such a change is done at your own risk.  Other options include profiling using a 1.3.x JDK or waiting until the Mantis release arrives.

View Data

The view data includes the objects currently held in the heap. Snapshots may be taken at any point while running your application.  In order to give the most accurate information, the JVM will perform a collection of unreferenced objects before providing the heap data.  The data shown is organized in a tree view.  Each root object within the heap displays at the root of the tree view.  All objects being held in the heap are directly or indirectly referenced via one of the root objects.

At this time, the view shows a single column containing the object information.

View Toolbar Items

The toolbar items may be used to control the heap dump view.

Take Snapshot

The take snapshot item will take a snapshot of the objects currently being held in the profiled application's heap and display the results in the view.