[java性能监测工具02]-jmap
jmap即jvm memory map,用来查看内存使用情况。
格式:jmap 选项 java进程id
常用选项:
-heap :打印进程的堆内存信息
-histo[:live]:查看堆内存中的对象数目、大小、类型,如果带上live则只统计活对象
-dump:format=b,file=dumpFileName:用jmap把进程内存使用情况dump到文件dumpFileName中,再用jhat工具来分析查看
-
java -heap pid查看进程堆内存信息:
下面是查看tomcat进程的信息,我把输出信息拷贝了下来,旁边的汉字是我的注释。
[[email protected] ~]# jmap -heap 19311 Attaching to process ID 19311, please wait... Debugger attached successfully. Server compiler detected. JVM version is 24.80-b11 using thread-local object allocation. Mark Sweep Compact GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 536870912 (512.0MB) #通过在tomcat的文件catalina.sh中配置"-Xmx512m"指定 NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 268435456 (256.0MB)#通过在tomcat的文件catalina.sh中配置"-XX:PermSize=256m"指定 MaxPermSize = 268435456 (256.0MB)#通过在tomcat的文件catalina.sh中配置"-XX:MaxPermSize=256m"指定 G1HeapRegionSize = 0 (0.0MB) Heap Usage: #堆内存结构 New Generation (Eden + 1 Survivor Space): #年轻代 capacity = 161021952 (153.5625MB) used = 120507304 (114.92472076416016MB) free = 40514648 (38.637779235839844MB) 74.8390530006741% used Eden Space: #伊甸园区域 capacity = 143130624 (136.5MB) used = 112557352 (107.34305572509766MB) free = 30573272 (29.156944274902344MB) 78.6396012638078% used From Space: #幸存者乐园的from区域 capacity = 17891328 (17.0625MB) used = 7949952 (7.5816650390625MB) free = 9941376 (9.4808349609375MB) 44.434666895604394% used To Space:#幸存者乐园的to区域 capacity = 17891328 (17.0625MB) used = 0 (0.0MB) free = 17891328 (17.0625MB) 0.0% used tenured generation: #年老代 capacity = 357957632 (341.375MB) used = 77723320 (74.12273406982422MB) free = 280234312 (267.2522659301758MB) 21.712994235027235% used Perm Generation: #持久代 capacity = 268435456 (256.0MB) used = 69037920 (65.83969116210938MB) free = 199397536 (190.16030883789062MB) 25.718629360198975% used 25472 interned Strings occupying 2990792 bytes.
说明:
堆内存=年轻代+年老代+持久代 年轻代=伊甸园区域+幸存者乐园区域(surviver spaces)中的一个区域 幸存者乐园区域(surviver spaces)=from区域+to区域
2.jmap -histo pid:查看堆内存中的对象数目、大小、类型,因为输出太多,我这里只截取了开头和结尾两部分:
共四列输出,分别表示序号、实例在堆中的个数、所占堆的大小、类型。
类型有的是简写,大致是下边几种类型:
B byte C char D double F float I int J long Z boolean [ 数组,如[I表示int[] [L+类名 其他对象
我们看到大部分类都不认识,但是你总能找到自己的类,比如我上边红框框住的那个类。
3.jmap -dump:format=b,file=dumpFileName的使用,以后结合jhat再说。