- 1)jmap是jdk自带的jvm内存分析的工具,位于jdk的bin目录。jdk1.6中jmap命令用法:
- jmap -histo <pid>在屏幕上显示出指定pid的jvm内存状况:
- num #instances #bytes class name
- ----------------------------------------------
- 1: 24206 2791864 <constMethodKlass>
- 2: 22371 2145216 [C
- 3: 24206 1940648 <methodKlass>
- 4: 1951 1364496 <constantPoolKlass>
- 5: 26543 1282560 <symbolKlass>
- 6: 6377 1081744 [B
- 7: 1793 909688 <constantPoolCacheKlass>
- 8: 1471 614624 <instanceKlassKlass>
- 9: 14581 548336 [Ljava.lang.Object;
- 10: 3863 513640 [I
- 11: 20677 496248 java.lang.String
- 12: 3621 312776 [Ljava.util.HashMap$Entry;
- 13: 3335 266800 java.lang.reflect.Method
- Total 239019 17140408
- #instance指的是对象数量,#bytes指的是这些对象占用的内存大小,class name指的是对象类型。
- 导出内存信息:jmap -dump:file=c:\dump.txt PID
- 2)jstat -gcutil pid 10000,这个命令是每个10秒钟输出一次jvm的gc信息.
- S0 S1 E O P YGC YGCT FGC FGCT GCT
- 54.62 0.00 42.87 43.52 86.24 1792 5.093 33 7.670 12.763
- S0:新生代的susvivor0区,空间使用率为54..62%
- S1:新生代的susvivor1区,空间使用率为0.00%(因为还没有执行第二次minor收集)
- E:eden区,空间使用率42.87%
- O:旧生代,空间使用率43.52%
- P:持久带,空间使用率86.24%
- YGC:minor gc执行次数1792次
- YGCT:minor gc耗费的时间5.093毫秒
- FGC:full gc执行次数33
- FGCT:full gc耗费的时间7.670毫秒
- GCT:gc耗费的总时间12.763毫秒
转载于:https://blog.51cto.com/lya041/671162