Using HeapAnalyzer to analyze Java heap usage and detect possible Java heap leaks
 Technote (troubleshooting)
 
Problem(Abstract)
HeapAnalyzer is available on www.alphaworks.ibm.com for analyzing Java™ heap dumps.
 
Resolving the problem

What is HeapAnalyzer?
HeapAnalyzer implements a new technology that allows for the finding of a possible Java heap leak area through its heuristic search engine and analysis of the Java heap dump in Java applications.

How does HeapAnalyzer work?
HeapAnalyzer analyzes Java heap dumps by parsing the Java heap dump, creating directional graphs, transforming them into directional trees, and executing the heuristic search engine. The following are examples of features:
  • List of objects/classes/arrays by size
  • List of objects/classes/arrays by size of child
  • List of objects/classes/arrays by number of child
  • List of objects/classes/arrays by frequency
  • List of objects/classes/arrays by alphabetical order
  • List of available heap spaces by size
  • Available heap space distribution chart
  • Tree view of Java heap dump
  • Locations of possible Java heap leak areas
  • Loading/Saving processed Java heap dumps.

What can I find about a Java heap leak within HeapAnalyzer?
The following is a snapshot of HeapAnalyzer. One of the possible memory leak areas is highlighted in the tree view. There are 192 entries of java.util.Hashtable$Entry (44% of total Java heap, Heap size is 258,494,664 bytes, TotalSize of java.util.Hashtable$Entry is 114,724,208 bytes) referenced in the org.apache.xml.utils.XMLReaderManager object which has a memory leak (reported in XSLT4J Java 2.6.2).



The following snapshot shows that HeapAnalyzer located a possible leak area
(com/ibm/ws/webcontainer/srt/CachedTargets) where there is actually no leak, because cache objects behave like leak objects. HeapAnalyzer cannot yet discern between leak objects and cache objects.



What is required to run HeapAnalyzer?
  • Operating System: Java 2 Platform, Standard Edition
  • Java Tool: Java Runtime Environment 1.4.1 or above
  • Memory: Larger memory than the size of Java heaps

How can I get Java heap dumps?
HeapAnalzyer analyses heap dumps generated by IBM SDKs 1.3.1 and 1.4.x (Microsoft Windows, AIX, Linux, and Linux for zSeries). The IBM SDK provides an option to generate a heap dump with a minimal performance impact trigger. To enable heap dump, set the IBM_HEAPDUMP option. See the IBM JVM Diagnostics Guide for details.

To generate a heap dump on Solaris for analysis by HeapAnalyzer, you must set up an agent on the Java virtual machine (JVM) prior to reproducing your problem. To obtain this agent, and directions to configure it, open up a Problem Management Record (PMR) with WebSphere Application Server support. If you are in the United States, call 1-800-IBM-SERV. If you are outside of the United States, call your local IBM support center.

There is no agent on HP-UX yet for analysis by HeapAnalyzer.

Where can I get a copy of HeapAnalzyer?
HeapAnalyzer is available on AlphaWorks:
http://www.alphaworks.ibm.com/tech/heapanalyzer

You must register with AlphaWorks; registration is free.

How can I install HeapAnalyzer?
  1. Unzip haNNN.zip (where NNN is version number).
  2. Unzip readmeNNN.zip and read the readme file.
  3. Run haNNN.jar with Java Runtime Environment.
 
 
Cross Reference information
Segment Product Component Platform Version Edition
Application Servers Runtimes for Java Technology Java SDK
 
 


Document Information


Product categories: Software > Application Servers > Distributed Application & Web Servers > WebSphere Application Server > Java SDK
Operating system(s): Windows
Software version: 6.0
Software edition:
Reference #: 1190608
IBM Group: Software Group
Modified date: Jan 2, 2007