jmap命令介绍

匿名 (未验证) 提交于 2019-12-03 00:28:02

Java Virtual Machine Memory Map 生成虚拟机的内存转储快照(heapdump)文件

jmap命令用于生产堆转储快照(一般称为heapdump或dump文件)。如果不使用jmap命令,要向获取Java堆转储快照还有一些比较”暴力“的手段:譬如-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生生成dump文件,通过-XX:+HeapDumpOnCtrlBreak参数则可以使用[Ctrl]+[Break]键让虚拟机生成dump文件,又或者在Linux系统下通过Kill -3命令发送进程退出信号”恐吓“一下虚拟机,也能拿到dump文件。

jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率、当前用的是那种收集器等。

jmap [option] vmid

选项

option具体选项及作用如下:

  • -dump 生成Java堆转储快照。格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象

  • -finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize()方法的对象。只在Linux/Solaris平台下有效

  • -heap 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效

  • -histo 显示堆中对象统计信息,包括类、实例数量和合计容量

  • -permstat 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效

  • -F 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效

Tips :需要有JDK环境

  • -dump 生成java堆转储快照
[root@iZbp13vdh76h8tevitqolvZ jvm]# jps -l 8134 sun.tools.jps.Jps 25273 org.apache.catalina.startup.Bootstrap 1914 com.aliyun.tianji.cloudmonitor.Application [root@iZbp13vdh76h8tevitqolvZ jvm]# jmap -dump:format=b,file=jmap.bin 25273 Dumping heap to /usr/local/learn/jvm/jmap.bin ... Heap dump file created [root@iZbp13vdh76h8tevitqolvZ jvm]# ll total 29736 -rw------- 1 root root 30446864 Jun 17 08:49 jmap.bin

使用jmap生成一个正在运行的tomcat的dump快照文件的例子,25273为jps查询到的LVMID

  • -histo 显示堆中对象统计信息,包括类、实例数量和合计容量
[root@iZbp13vdh76h8tevitqolvZ ~]# jmap -histo 25273|more   num     #instances         #bytes  class name ----------------------------------------------    1:         19039        9157264  [B    2:         35660        6488016  [C    3:          7602        1003112  [I    4:         34069         817656  java.lang.String    5:         13756         550240  java.util.TreeMap$Entry    6:         10135         405400  java.util.HashMap$KeyIterator    7:          3172         362048  java.lang.Class    8:         11184         357888  java.util.HashMap$Node    9:          3518         309584  java.lang.reflect.Method   10:          5149         232328  [Ljava.lang.String;   11:          3409         214960  [Ljava.lang.Object;   12:           959         157296  [Ljava.util.HashMap$Node;   13:          4863         155616  java.util.concurrent.locks.AbstractQueuedSynchronizer$Node   14:          4402         140864  java.io.File   15:          4190         134080  java.util.concurrent.ConcurrentHashMap$Node   16:          2415          96600  java.util.HashMap$ValueIterator   17:          4678          74848  java.lang.Object   18:           967          69624  java.util.regex.Pattern   19:          1613          64520  java.util.LinkedHashMap$Entry   20:          1238          59424  java.util.HashMap   21:          2415          57960  org.apache.catalina.LifecycleEvent   22:           966          54096  [Ljava.util.regex.Pattern$GroupHead;   23:          2192          52608  java.util.ArrayList   24:          1293          51720  java.lang.ref.Finalizer   25:          2415          50232  [Lorg.apache.catalina.Container;   26:          2312          48520  [Ljava.lang.Class;   27:           549          43920  java.lang.reflect.Constructor   28:          1358          43456  java.util.Hashtable$Entry   29:            60          42848  [Ljava.util.concurrent.ConcurrentHashMap$Node;   30:           859          41232  org.apache.tomcat.util.modeler.AttributeInfo   31:            10          41120  [Ljava.nio.ByteBuffer;   32:           861          34440  java.lang.ref.SoftReference   33:            30          31200  [[C   34:           549          30744  java.util.zip.ZipFile$ZipFileInputStream   35:           546          30576  java.util.zip.ZipFile$ZipFileInflaterInputStream   36:           508          24384  java.util.TreeMap   37:           968          23232  java.util.regex.Pattern$Single   38:           967          23208  java.util.regex.Pattern$Start   39:           966          23184  java.util.regex.Pattern$TreeInfo   40:           841          20184  org.apache.tomcat.util.buf.StringCache$ByteEntry   41:           966          19320  [Lorg.apache.catalina.startup.HostConfig$DeployedApplication;   42:           601          19232  javax.management.MBeanAttributeInfo   43:           379          18192  java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync   44:           243          17496  org.apache.tomcat.util.net.jsse.openssl.Cipher   45:           147          16464  sun.nio.ch.SocketChannelImpl
  • -heap 显示Java堆详细信息
[root@iZbp13vdh76h8tevitqolvZ jvm]# jmap -heap 25273|more  Attaching to process ID 25273, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.66-b17  using thread-local object allocation. Mark Sweep Compact GC  Heap Configuration:    MinHeapFreeRatio         = 40    MaxHeapFreeRatio         = 70    MaxHeapSize              = 262144000 (250.0MB)    NewSize                  = 5570560 (5.3125MB)    MaxNewSize               = 87359488 (83.3125MB)    OldSize                  = 11206656 (10.6875MB)    NewRatio                 = 2    SurvivorRatio            = 8    MetaspaceSize            = 21807104 (20.796875MB)    CompressedClassSpaceSize = 1073741824 (1024.0MB)    MaxMetaspaceSize         = 17592186044415 MB    G1HeapRegionSize         = 0 (0.0MB)  Heap Usage: New Generation (Eden + 1 Survivor Space):    capacity = 8192000 (7.8125MB)    used     = 5356200 (5.108070373535156MB)    free     = 2835800 (2.7044296264648438MB)    65.38330078125% used Eden Space:    capacity = 7340032 (7.0MB)    used     = 5062472 (4.827949523925781MB)    free     = 2277560 (2.1720504760742188MB)    68.97070748465401% used From Space:    capacity = 851968 (0.8125MB)    used     = 293728 (0.280120849609375MB)    free     = 558240 (0.532379150390625MB)    34.47641225961539% used To Space:    capacity = 851968 (0.8125MB)    used     = 0 (0.0MB)    free     = 851968 (0.8125MB)    0.0% used tenured generation:    capacity = 17969152 (17.13671875MB)    used     = 17702584 (16.88249969482422MB)    free     = 266568 (0.25421905517578125MB)    98.51652431901071% used
文章来源: jmap命令介绍
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!