Heap Dumps and Memory Analysis on Java

In simple terminology, Heap Dump is a snapshot of JVM at current time. This gives an insight into the objects running at the current instance. Heap dumps can be performed using jConsole or other monitoring tool such as VisualVM, which is a troubleshooting tool included in the JDK.

Analysing Heap Dump using JavaVisualVM provides you Class view, which gives visual representation of list of classes and percentage of instance reference by the class. Instance view displays object instance for a selected class.

To give a brief introduction, Java Virtual Machine (JVM) has following three types of memory that it uses

Heap memory is the run-time data area from which memory for all class instance and array is allocated.

Non-Heap memory includes method area and memory required for internal processing of the JVM

Native Memory is the virtual memory by the operating system.  

This article provides in dept analysis on the memory troubleshooting on JVM 

http://java.sun.com/developer/technicalArticles/J2SE/monitoring/