java堆分析工具jmap

来源:互联网 发布:主机屋域名绑定 编辑:程序博客网 时间:2024/06/05 10:59
jmap是堆分析工具,下面讲讲如何运用。

// 打印jvm的堆状况,主要是年轻代和老年代信息
jmap -heap <pid>
如:
[root@st ~]# /usr/jdk64/jdk1.7.0_67/bin/jmap -heap 139020
Attaching to process ID 139020, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.65-b04

using parallel threads in the new generation.
using thread-local object allocation.
Concurrent Mark-Sweep GC

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 2147483648 (2048.0MB)
   NewSize          = 1310720 (1.25MB)
   MaxNewSize       = 715784192 (682.625MB)
   OldSize          = 5439488 (5.1875MB)
   NewRatio         = 2
   SurvivorRatio    = 8
   PermSize         = 21757952 (20.75MB)
   MaxPermSize      = 85983232 (82.0MB)
   G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):
   capacity = 644218880 (614.375MB)
   used     = 71736616 (68.41336822509766MB)
   free     = 572482264 (545.9616317749023MB)
   11.135441420158317% used
Eden Space:
   capacity = 572653568 (546.125MB)
   used     = 66047192 (62.987510681152344MB)
   free     = 506606376 (483.13748931884766MB)
   11.53353365642524% used
From Space:
   capacity = 71565312 (68.25MB)
   used     = 5689424 (5.4258575439453125MB)
   free     = 65875888 (62.82414245605469MB)
   7.949974423363095% used
To Space:
   capacity = 71565312 (68.25MB)
   used     = 0 (0.0MB)
   free     = 71565312 (68.25MB)
   0.0% used
concurrent mark-sweep generation:
   capacity = 1431699456 (1365.375MB)
   used     = 1362189696 (1299.0853271484375MB)
   free     = 69509760 (66.2896728515625MB)
   95.14494751613567% used
Perm Generation:
   capacity = 75956224 (72.4375MB)
   used     = 45465520 (43.35929870605469MB)
   free     = 30490704 (29.078201293945312MB)
   59.8575305691868% used

17502 interned Strings occupying 2027936 bytes.

// 上面的信息比较笼统,我们还可以打印出具体类及实例信息, 将有助于帮助我们分析堆里面到底有哪些类的实例等
jmap -histo[:live只处理存活对象] <pid>
如,


 num     #instances         #bytes  class name
----------------------------------------------
   1:       4799654      767633904  [B
   2:       4524949      252724792  [Ljava.lang.Object;
   3:       4771043      114505032  backtype.storm.messaging.TaskMessage
   4:       4481022      107544528  java.util.ArrayList
   5:       4467550      107221200  java.util.concurrent.LinkedBlockingQueue$Node
   6:         72567       10646528  <constMethodKlass>
   7:         72567        9300432  <methodKlass>
   8:          7755        8458672  <constantPoolKlass>
   9:          7755        6805200  <instanceKlassKlass>
  10:          6826        4969984  <constantPoolCacheKlass>
  11:         32399        3637176  [C
  12:          4074        1903960  <methodDataKlass>
  13:          8184        1056368  java.lang.Class
  14:         65570        1049120  backtype.storm.utils.MutableObject
  15:         10837         846800  [S
  16:         32101         770424  java.lang.String
  17:         17095         683800  clojure.lang.PersistentVector

// 除此之外,我们可以将堆信息dump成文件,通过其他工具如jhat, mat做进一步分析

jmap -dump:live,format=b,file=heap.bin <pid>

例如:

[root@st ~]#/usr/jdk64/jdk1.7.0_67/bin/jmap -dump:format=b,file=worker.bin 139020


0 0
原创粉丝点击