jmap的使用可以参考:
官方文档 http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
和这篇博客 http://blog.youkuaiyun.com/fenglibing/article/details/6411953
本文主要是介绍一下jmap常用的几个参数,作为自己的备忘录。注意如果是使用64位的JVM,使用jmap的时候,需要加-J-d64
1、打印每个class的实例数量,内存占用,类全名信息.live子参数,只统计活的对象数量.
> jmap -histo:live 6824
num #instances #bytes class name
----------------------------------------------
1: 1232 238144 [C
2: 414 48184 <constMethodKlass>
3: 69 32712 [B
4: 414 29864 <methodKlass>
5: 60 29512 <constantPoolKlass>
6: 1084 26016 java.lang.String
>jmap -permstat 6824
class_loader classes bytes parent_loader alive? type
<bootstrap> 382 1684072 null live <internal>
0x2a3a7fe0 0 0 null live sun/misc/Launcher$ExtClassLoader@0x38a951e8
0x2a3aa748 6 51592 0x2a3a7fe0 live sun/misc/Launcher$AppClassLoader@0x38ab7350
3、显示对内存的分配和使用情况,对于了解jvm内存分配很有用, 会显示年轻代、老年代和永久代的相关内存信息。
>jmap -heap 6824
using thread-local object allocation.
Mark Sweep Compact GC
Heap Configuration:
MinHeapFreeRatio = 40
4、最常用的获取内存dump
jmap -dump:live,format=b,file=m.hprof 6824
可以参考
http://blog.youkuaiyun.com/aitangyong/article/details/24012535这篇博客