【JVM】jmap命令详解

时间:2020-05-13
本文章向大家介绍【JVM】jmap命令详解,主要包括【JVM】jmap命令详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1、jmap命令概述

Jmap是一个可以输出内存中所有对象的工具。可以将JVM中的heap(堆),以二进制形式输出成文本。打印出某个java进程内存内所有‘对象‘’的情况。

2、基本命令

pid:java进程号

1、jmap -heap  pid : 打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况

也可以将堆信息输出到文件中。jmap -heap pid >heap.txt

Attaching to process ID 6349, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.212-b04

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0                         【最小堆使用比例】
   MaxHeapFreeRatio         = 100                       【最大堆可用比例】
   MaxHeapSize              = 268435456 (256.0MB)       【最大堆空间大小】
   NewSize                  = 44564480 (42.5MB)         【新生代分配大小】
   MaxNewSize               = 89128960 (85.0MB)         【新生代最大可分配大小】
   OldSize                  = 89653248 (85.5MB)         【老年代大小】
   NewRatio                 = 2                            【新生代占的比例】
   SurvivorRatio            = 8                            【新生代与suvivor的比例】
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:                                              【堆使用情况】
PS Young Generation                                      【新生代】
Eden Space:                                              【Eden区】
   capacity = 87031808 (83.0MB)                           【Eden区容量】
   used     = 66957240 (63.85540008544922MB)              【Eden区使用量】
   free     = 20074568 (19.14459991455078MB)              【Eden区当前剩余容量】
   76.93421697042075% used                                【Eden区使用情况百分比】
From Space:                                              【From survivor区】  
   capacity = 1048576 (1.0MB)                             【From survivor区容量】
   used     = 278544 (0.2656402587890625MB)               【From survivor区已使用量】
   free     = 770032 (0.7343597412109375MB)               【From survivor区剩余容量】
   26.56402587890625% used                                【From survivor区使用比例】
To Space:                                                 【To survivor区】
   capacity = 1048576 (1.0MB)                             【To survivor区容量】
   used     = 0 (0.0MB)                                   【To survivor区使用量】
   free     = 1048576 (1.0MB)                             【To survivor区剩余容量】
   0.0% used                                              【To survivor区使用比例】
PS Old Generation                                        【老年代】
   capacity = 179306496 (171.0MB)                         【老年代容量】
   used     = 106356544 (101.42950439453125MB)            【老年代已使用容量】
   free     = 72949952 (69.57049560546875MB)              【老年代剩余容量】
   59.31549964592471% used                                【老年代使用比例】

30237 interned Strings occupying 3151392 bytes.

2、jmap -histo[:live] pid :打印每个class的实例数目,内存占用,类全名信息。VM的内部类名字开头会加上前缀“*”。如果live子参数加上后,只统计活的对象数量.

也可以将信息输出到文件中

jmap -histo 6349 >histo.txt
jmap -histo:live 6349 >histo_live.txt

说明: instances(实例数)、bytes(占用的字节大小)、 class name(类名)。它基本是按照使用使用大小逆序排列的。

instance 是对象的实例个数 
bytes 是总占用的字节数 
class name 对应的就是 Class 文件里的 class 的标识 

B 代表 bytes
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组 [I 表示 int[]
对象用 [L+ 类名表示

原文地址:https://www.cnblogs.com/kiko2014551511/p/12881887.html