jmap命令(Java Memory Map)的使用
本文主要是介绍一下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
2、打印永久代中classloader的相关信息
- >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