1、生成dump文件,bin下面几个常用的命令的使用
jps
jmap生成dump文件
jmap -heap 67008
jmap -dump:format=b,file=c:/temp/autodump/jmapdump 67008
jstat
jstat -gcutil 67008 5s 3
S0: Survivor0(新生代Survivor)是空的
S1: Survivor1(新生代Survivor)是空的
E: Eden(新生代Eden)占用0.38%
O: Old(老年代)占用48.24%
M:
CCS:
YGC: Young GC==> Minor GC ==> 新生代GC的次数
YGCT: YGC 耗时0.578秒
FGC: Full GC==>老年代GC的次数
FGCT: FGC总耗时1.067秒
GCT: 所有GC总耗时1.645秒
jinfo 查看jvm运行参数信息
jinfo -flags 12148
启动一个内置的http服务器来将分析结果展现为html格式
jhat
jhat jmapdump
jstack
jstack 12148
jconsole
jvisualvm
2、使用程序模拟生成dump文件
3、dump文件分析
Histogram可以列出内存中的对象,对象的个数以及大小
- Class Name : 类名称,java类名
- Objects : 类的对象的数量,这个对象被创建了多少个
- Shallow Heap :一个对象内存的消耗大小,不包含对其他对象的引用
- · Retained Heap :是shallow Heap的总和,也就是该对象被GC之后所能回收到内存的总和
outgoing references :表示该对象的出节点(被该对象引用的对象)。
incoming references :表示该对象的入节点(引用到该对象的对象)。
Path To GC Roots -> exclude all phantim/weak/soft etc. references
Dominator Tree
Top Consumers
Duplicate Classes
Leak Suspects
Top Components
Component Report