读书人

j地图 命令详解

发布时间: 2013-07-08 14:13:00 作者: rapoo

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+类名表示

读书人网 >编程

热点推荐