本系列包括:
JVM性能调优5:Heap堆分析方法
heap分析,包括heap分析和dump文件分析两部分。
(1)heap堆分析,通过jstat命令获取jvm实时的内存分配和垃圾回收情况,并输入到文件中,如下:
jstat -gccapacity -t -h 10 14696 1000 10>gc.log |
通过分析heap分配的最小值、最大值、S0、S1、eden、 old最小和最大、perm最小和最大、minorgc和full gc的次数等内容:
Timestamp NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC 1134.8 41984.0 672384.0 624256.0 64.0 64.0 109696.0 84096.0 1344896.0 84096.0 84096.0 21248.0 83968.0 21248.0 21248.0 4595 0 |
(2)通过jmap命令分析heap内存的使用情况,如下:
jmap -heap 14696 >gc.log |
分析heap内存配置和当前的使用情况的快照。如下:
Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 2065694720 (1970.0MB) NewSize = 1310720 (1.25MB) 。。。 。。。 Heap Usage:。。。 。。。 PS Young Generation。。。 。。。 Eden Space:。。。 。。。 From Space:。。。 。。。 。。。 。。。 |
(3)通过jmap分发heap中对象分配情况,命令如下:
jmap -histo 21204 >gc.log |
分析heap中对象分布情况。如下:
num #instances #bytes class name ---------------------------------------------- 1: 1123 19054280 [B 2: 11804 1613008 <methodKlass> 3: 11804 1506512 <constMethodKlass> .... .... Total 67013 26866048 |
(4)dump文件通过工具进行分析。
首先导出dump映像文件。通过命令:
jmap -dump:live,file=<pid>_.hprof 21204 |
导出dump文件,注意文件扩展名为“hprof” ,不要导出“bin”类型,在mat堆内存分析工具中不支持“bin”的文件。
以下工具提供dump文件分析功能;jhat为jdk自带的分析工具;mat为eclipse提供的dump分析工具Mat;HeapAnalyzer为IBM提供的共享dump文件分析工具;jprofiler工具。
推荐使用eclipse的mat分析工具。