1. jstat -gcutil 14331 3s
3秒一次监控内存回收情况
S0 S1 E O P YGC YGCT FGC F0.00 9.04 26.16 61.43 99.52 833 6.973 140.00 9.04 26.16 61.43 99.52 833 6.973 140.00 9.04 26.16 61.43 99.52 833 6.973 140.00 9.04 26.16 61.43 99.52 833 6.973 140.00 9.04 26.16 61.43 99.52 833 6.973 14S0、S1 代表两个Survivor区;
E 代表 Eden 区使用率;
O(Old)代表老年代使用率;
P(Permanent)代表永久代使用率;
YGC(Young GC)代表Minor GC 次数;
YGCT代表Minor GC耗时;
FGC(Full GC)代表Full GC次数;
FGCT(Full GC)代表Full GC耗时;
GCT代表Minor & Full GC共计耗时。
Java 堆分为新生代和老年代,新生代一般划分为三块区域,Eden + From Survivor + To Survivor,Eden 和 Survivor 的内存比为8:1,每次只使用一个Eden 和一个 Survivor 区域,另一个 Survivor 用于复制收集算法回收内存。
对象一般尽量分配到新生代中,而对于大对象(长字符串和大数组)直接分配在老年代中,同时“年龄”长的的对象会从新生代自动晋升到老年代中。
Java 方法区称为永久代,只有 HotSpot 虚拟机才存在永久代。
当 Eden 区域分配不足时,自动发生一次 Minor GC。
当发生 Minor GC 时,虚拟机会自动检测(比较)新生代晋升到老年代的对象内存大小和老年代剩余内存大小,如果晋升>剩余,则发生一次Full GC;如果晋升<剩余,则去检测老年代的内存担保 HandlePromotionFailure 是否允许担保失败,如果不允许担保失败,则发生一次Full GC,如果允许失败,则进行一次Minor GC。
2. jmap -dump:live,file=dumpfile 14331
jhat dumpfile
[root@ebs-21414 stock]# jhat dumpfile
Reading from dumpfile...
Dump file created Thu Mar 05 16:45:06 CST 2015
Snapshot read, resolving...
Resolving 264282 objects...
Chasing references, expect 52 dots....................................................
Eliminating duplicate references....................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.Dump file created Thu Mar 05 16:45:06 CST 2015
Snapshot read, resolving...
Resolving 264282 objects...
Chasing references, expect 52 dots....................................................
Eliminating duplicate references....................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
3. 地址栏里面输入 IP:7000 直接拉到最下面,从这里看出实例引用个数排行,哪里内存泄露
All classes including platform
Show all members of the rootset
Show instance counts for all classes (including platform)
Show instance counts for all classes (excluding platform)
Show heap histogram
Show finalizer summary
Execute Object Query Language (OQL) query
linux下java内存泄露定位jstat+jmap+jhat
原文地址:http://blog.csdn.net/javascript_2011/article/details/44085351