jmap命令(Java Memory Map)的使用

本文主要是介绍一下jmap常用的几个参数,作为自己的备忘录。注意如果是使用64位的JVM,使用jmap的时候,需要加-J-d64

 

1、打印每个class的实例数量,内存占用,类全名信息.live子参数,只统计活的对象数量.

[plain]

  1. > jmap -histo:live 6824  

[plain]

  1. num     #instances         #bytes  class name  
  2. ———————————————  
  3.   1:          1232         238144  [C  
  4.   2:           414          48184  <constMethodKlass>  
  5.   3:            69          32712  [B  
  6.   4:           414          29864  <methodKlass>  
  7.   5:            60          29512  <constantPoolKlass>  
  8.   6:          1084          26016  java.lang.String  

 

2、打印永久代中classloader的相关信息

[plain]

  1. >jmap -permstat 6824  
[plain]

  1. class_loader    classes bytes   parent_loader   alive?  type  
  2.   
  3. <bootstrap>     382     1684072   null          live    <internal>  
  4. 0x2a3a7fe0      0       0         null          live    sun/misc/Launcher$ExtClassLoader@0x38a951e8  
  5. 0x2a3aa748      6       51592   0x2a3a7fe0      live    sun/misc/Launcher$AppClassLoader@0x38ab7350  


3、显示对内存的分配和使用情况,对于了解jvm内存分配很有用,会显示年轻代、老年代和永久代的相关内存信息。

[plain]

  1. >jmap -heap 6824  
[plain]

  1. using thread-local object allocation.  
  2. Mark Sweep Compact GC  
  3.   
  4. Heap Configuration:  
  5.    MinHeapFreeRatio = 40  


4、最常用的获取内存dump

[plain]

  1. jmap -dump:live,format=b,file=m.hprof 6824   

标签