linux下java内存泄露定位jstat+jmap+jhat

1.   jstat -gcutil 14331 3s  

 3秒一次监控内存回收情况

  S0     S1     E      O      P     YGC     YGCT    FGC    F

  0.00   9.04  26.16  61.43  99.52    833    6.973    14

  0.00   9.04  26.16  61.43  99.52    833    6.973    14

  0.00   9.04  26.16  61.43  99.52    833    6.973    14

  0.00   9.04  26.16  61.43  99.52    833    6.973    14

  0.00   9.04  26.16  61.43  99.52    833    6.973    14

S0、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=dumpfile14331 

     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

jmap -histo:live pid

你可能感兴趣的:(java)