To Generate Heap Dump
1. The first and preferred option is to modify the JVM settings to include the following 2 options. Ensure that your production startup scripts have these options in place.
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnCtrlBreakType kill -3 <pid> to generate the hprof file in the bin folder. The 2 commands listed above are non-intrusive and a heap dump is only generated either during an OOME or on demand. It is also considerably lighter on resources as compared to JMAP.
2. Use JMAP - Java 5 (and later versions of Jdk 1.4 starting Jdk 1.4.2_18) ships with a tool called JMAP. It attaches itself to the JVM and obtains heap layout information, class histograms and complete heap snapshots. Heap layout information is instantly retrieved, with no impact on the running application. However, taking histograms and heap snapshots take longer, and also affect memory / CPU of the application, resulting in either slow response times or complete stalling of the application. So, schedule this activity when the system load is low.
Commands to be used ps -ef | grep <username> to get the list of PIDs for all the processes running on a system jmap <pid> > out.txt - This command will print out the same information as pmap jmap –heap <pid> >> out.txt - Prints out java heap summary jmap –heap:format=b <pid> >> out.txt - Prints out java heap in hprof binary format (generally called heap.bin) in the current directory jmap –histo <pid> >> out.txt - Prints out histogram of java object heap
Next run the generated heap dump past one of the following tools
1. Eclipse Memory Analyzer
Download the MAT from http://www.eclipse.org/mat/downloads.php. Open the hprof dump generated using jmap or HeapDumpOnCtrlBreak. MAT parses the dump and generates a visual rep which gives a break down in terms of leak suspects, components and consumers.
On opening the heap dump, you see an info page with a chart of the biggest objects, and in many cases you will notice a single huge object already here. Click on the "Leak Suspects" link of the Overview and drilldown through the HTML report produced. Further reading
2. JHat which ships with Java 6 (Mustang) - To run the tool, use the command
jhat -J-mx512m -stack false heap.bin
No comments:
Post a Comment