JVM回顾(二)

查看JAVA堆使用情况jmap

1、查看JVM指定进程的堆内存概要 jmap -heap pid

 ./jmap -heap 27509
Attaching to process ID 27509, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.144-b01

using thread-local object allocation.
Parallel GC with 2 thread(s)//并行GC(ParNew)

Heap Configuration://堆内存初始化配置
   //对应jvm启动参数-XX:MinHeapFreeRatio设置JVM堆最小空闲比率(default 40)
   MinHeapFreeRatio         = 0 
   //对应jvm启动参数 -XX:MaxHeapFreeRatio设置JVM堆最大空闲比率(default 70)
   MaxHeapFreeRatio         = 100
   //对应jvm启动参数-XX:MaxHeapSize=设置JVM堆的最大大小
   MaxHeapSize              = 1073741824 (1024.0MB)
   //对应jvm启动参数-XX:NewSize=设置JVM堆的‘新生代’的默认大小
   NewSize                  = 20971520 (20.0MB)
   //对应jvm启动参数-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
   MaxNewSize               = 357564416 (341.0MB)
   //对应jvm启动参数-XX:OldSize=<value>:设置JVM堆的‘老生代’的大小
   OldSize                  = 41943040 (40.0MB)
   //对应jvm启动参数-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
   NewRatio                 = 2
   //对应jvm启动参数-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
   SurvivorRatio            = 8
   //对应jvm启动参数-XX:MaxPermSize= :设置JVM堆的‘永生代’的最大大小
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   //JDK 8去除了永久代,引入了元空间Metaspace
   MaxMetaspaceSize         = 17592186044415 MB
   //G1垃圾回收算法中的 region大小设置
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage://堆内存分布
PS Young Generation
Eden Space: //Eden区内存分布
   capacity = 143130624 (136.5MB)
   used     = 87913480 (83.84082794189453MB)
   free     = 55217144 (52.65917205810547MB)
   61.42185197208391% used
From Space://其中一个Survivor区的内存分布
   capacity = 19922944 (19.0MB)
   used     = 9030480 (8.612136840820312MB)
   free     = 10892464 (10.387863159179688MB)
   45.327036004317435% used
To Space://另一个Survivor区的内存分布 
   capacity = 20971520 (20.0MB)
   used     = 0 (0.0MB)
   free     = 20971520 (20.0MB)
   0.0% used
PS Old Generation //当前的Old区内存分布
   capacity = 462946304 (441.5MB)
   used     = 198115656 (188.93781280517578MB)
   free     = 264830648 (252.56218719482422MB)
   42.79452158667628% used

27152 interned Strings occupying 3139984 bytes.

2、dump 对信息jmap dump:format=b,file=/tmp/test.dump pid

#dump 堆信息
jmap dump:format=b,file=/tmp/27509_formatb 27509
Dumping heap to /tmp/27509_formatb.dump ...
Heap dump file created

3、分析查看进程堆内存dump文件 jhat

./jhat -port 9998 /tmp/27509_formatb.dump
Reading from /tmp/27509_formatb.dump...
Dump file created Fri Mar 30 16:39:05 CST 2018
Snapshot read, resolving...
Resolving 3357315 objects...
Chasing references, expect 671 dots.........
Eliminating duplicate references......
Snapshot resolved.
Started HTTP server on port 9998
Server is ready.
#访问:http://ip:9998/  查看
  • 注意
    注意如果Dump文件太大,可能需要加上-J-Xmx512m这种参数指定最大堆内存,即jhat -J-Xmx512m -port 9998 /tmp/27509_formatb.dump

4、 jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图

#如果带上live则只统计活对象
./jmap -histo:live 27509|more

 num     #instances         #bytes  class name
----------------------------------------------
   1:        686725       95712840  [C
   2:        169432       18341504  [Ljava.lang.Object;
   3:        700016       16800384  java.lang.String
   4:          9029       14992976  [B
   5:        180480        5775360  com.caucho.env.actor.ValueActorQueue$ValueItem
   6:        172076        5506432  java.util.HashMap$Node
   7:        161462        3875088  java.util.ArrayList
   8:        153364        3680736  java.lang.Long
   9:         83866        2683712  com.caucho.loader.JarMap$JarList
  10:           186        1943712  [Lcom.caucho.util.LruCache$CacheItem;
  11:          6888        1937544  [I
  12:          2418        1586208  io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueue
  13:          5647        1500600  [Ljava.util.HashMap$Node;
  14:         88934        1422944  java.lang.Object
   ...省略...

#说明
    class name是对象类型,说明如下:
      B  byte
      C  char
      D  double
      F  float
      I  int
      J  long
      Z  boolean
      [  数组,如[I表示int[]
      [L+类名 其他对象
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容