jmap详解

1.  jmap -heap pid

        查看java 堆(heap)使用情况

       using thread-local object allocation.
       Parallel GC with 4 thread(s)          //GC 方式          Heap Configuration:       //堆内存初始化配置
        MinHeapFreeRatio=40     //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
        MaxHeapFreeRatio=70  //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
        MaxHeapSize=512.0MB  //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
        NewSize  = 1.0MB          //对应jvm启动参数-XX:NewSize=设置JVM堆的‘新生代’的默认大小
        MaxNewSize =4095MB   //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
        OldSize  = 4.0MB            //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的‘老生代’的大小
        NewRatio  = 8         //对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
        SurvivorRatio = 8    //对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
         PermSize= 16.0MB       //对应jvm启动参数-XX:PermSize=<value>:设置JVM堆的‘永生代’的初始大小
         MaxPermSize=64.0MB  //对应jvm启动参数-XX:MaxPermSize=<value>:设置JVM堆的‘永生代’的最大大小

         Heap Usage:               //堆内存分步
         PS Young Generation
         Eden Space:          //Eden区内存分布
           capacity = 20381696 (19.4375MB)  //Eden区总容量
           used     = 20370032 (19.426376342773438MB)  //Eden区已使用
           free     = 11664 (0.0111236572265625MB)  //Eden区剩余容量
           99.94277218147106% used  //Eden区使用比率
        From Space:        //其中一个Survivor区的内存分布
            capacity = 8519680 (8.125MB)
            used     = 32768 (0.03125MB)
            free     = 8486912 (8.09375MB)
            0.38461538461538464% used
       To Space:            //另一个Survivor区的内存分布
           capacity = 9306112 (8.875MB)
           used     = 0 (0.0MB)
           free     = 9306112 (8.875MB)
           0.0% used
       PS Old Generation  //当前的Old区内存分布
           capacity = 366280704 (349.3125MB)
           used     = 322179848 (307.25464630126953MB)
           free     = 44100856 (42.05785369873047MB)
           87.95982001825573% used
       PS Perm Generation  //当前的 “永生代” 内存分布
           capacity = 32243712 (30.75MB)
           used     = 28918584 (27.57891082763672MB)
           free     = 3325128 (3.1710891723632812MB)
           89.68751488662348% used

     2. jmap -histo pid

       查看堆内存(histogram)中的对象数量,大小

               num     #instances         #bytes  class name

               序号         实例个数            字节数       类名    
       ----------------------------------------------
        1:       3174877      107858256  [C
        2:       3171499       76115976  java.lang.String
        3:       1397884       38122240  [B
        4:        214690       37785440  com.tongli.book.form.Book
        5:        107345       18892720  com.tongli.book.form.Book
        6:         65645       13953440  [Ljava.lang.Object;
        7:         59627        7648416  <constMethodKlass>
        8:        291852        7004448  java.util.HashMap$Entry
        9:        107349        6871176  [[B

        ..........

       total       9150732      353969416

     3. jmap - dump  pid

         将内存使用的详细情况输出到文件

         jmap -dump:format=b,file=m.datpid

          用jhat命令可以参看 jhat -port 5000 m.dat
       在浏览器中访问:http://localhost:5000/  查看详细信息

      sun 官方文档  http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html


class name对应的就是Class文件里的class的标识
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前边有[代表数组,[I 就相当于int[]

对象用[L+类名表示


你可能感兴趣的:(JMAP)