Jmap查看进程对象创建次数及内存大小
(2014-07-16 18:24:44)
标签:
it |
分类: JVM |
jmap -histo 18765 | more > jmap.log
查看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=:设置JVM堆的‘老生代’的大小
NewRatio = 8
//对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
SurvivorRatio = 8
//对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
PermSize= 16.0MB
//对应jvm启动参数-XX:PermSize=:设置JVM堆的‘永生代’的初始大小
MaxPermSize=64.0MB
//对应jvm启动参数-XX:MaxPermSize=:设置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
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
注:18765为进程ID
2618:
1
16
org.apache.hadoop.ha.proto.HAServiceProtocolProtos$HAServiceStateProto$1
2619:
1
16
org.apache.hadoop.hdfs.protocol.proto.DatanodeProtocolProtos$BlockRecoveryCommandProto$1
2620:
1
16
sun.net.DefaultProgressMeteringPolicy
2621:
1
16
org.apache.hadoop.hdfs.protocol.proto.HdfsProtos$ExtendedBlockProto$1
2622:
1
16
org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$DisallowSnapshotRequestProto$1
2623:
1
16
com.sun.org.apache.xerces.internal.impl.dv.dtd.IDREFDatatypeValidator
2624:
1
16
org.apache.hadoop.hdfs.protocol.proto.HdfsProtos$ContentSummaryProto$1
2625:
1
16
org.apache.commons.lang.text.StrMatcher$NoMatcher
2626:
1
16
org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$RenameRequestProto$1
2627:
1
16
sun.reflect.GeneratedMethodAccessor70
Total 777719802
50711936264
777719802 对象总次数
50711936264
对象占用的堆大小
jmap详解
1. jmap -heap pid
class name对应的就是Class文件里的class的标识
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前边有[代表数组,[I 就相当于int[]
对象用[L+类名表示
前一篇:jstat 查看GC