一、基本语法
1.1、语法
jmap [ option ] pid
jmap [ option ] executable core
jmap [ option ] [server-id@]remote-hostname-or-IP
# for example
jmap -dump:format=b,file=/tmp/HeapDump.hprof <pid>
1.2、option 解析
1.2.1、-dump 参数
-dump:[live,]format=b,file=<filename>
# live 存活的对象
# format=b 文件格式,b 二进制流的形式
# file 导出的文件名称
1.2.2、-finalizerinfo
1.2.3、-heap
- 打印一个堆的总体概要。使用的GC算法,堆的内存分配和 新生代和老年代的使用情况
1.2.4、-histo[:live]
打印堆的直方图
- 类的数量
- 占用的内存大小(字节)
- 类的全限定类名
1.2.5、-permstat
打印载入堆永久代的类加载器的统计
1.2.6、-F
1.2.7、-h
打印帮助信息
1.2.8、-J
二、使用解析
2.1、打印当前堆概括
2.1.1、命令
jmap -heap pid
2.1.2、禁止访问进程的内存状态处理
# 临时开启
echo 0 > /proc/sys/kernel/yama/ptrace_scope
# 永久开启:
/etc/sysctl.d/10-ptrace.conf
#添加或修改为以下这一句:(0:允许, 1:不允许)
kernel.yama.ptrace_scope = 0
2.1.3、打印信息
Debugger attached successfully.
Server compiler detected.
JVM version is 25.312-b07
# GC 分配算法(线程本地变量 或 指针碰撞),这里使用线程本地变量
using thread-local object allocation.
# GC 垃圾收集器
Parallel GC with 8 thread(s)
# 堆的配置
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 2067791872 (1972.0MB) # 最大堆,默认机器内存的1/4
NewSize = 42991616 (41.0MB) # 新生代
MaxNewSize = 688914432 (657.0MB) # 最大新生代内存
OldSize = 87031808 (83.0MB) #老年代
NewRatio = 2 # 新生代和老年代的比例
SurvivorRatio = 8 # suivivor 区的比例 8:1:1
MetaspaceSize = 21807104 (20.796875MB) # 元空间
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB # 最大元空间内存
G1HeapRegionSize = 0 (0.0MB) # G1 堆区域大小
# 堆使用情况
Heap Usage:
PS Young Generation
Eden Space:
capacity = 94371840 (90.0MB)
used = 32290664 (30.794776916503906MB)
free = 62081176 (59.205223083496094MB)
34.21641879611545% used
From Space:
capacity = 5242880 (5.0MB)
used = 5231264 (4.988922119140625MB)
free = 11616 (0.011077880859375MB)
99.7784423828125% used
To Space:
capacity = 5242880 (5.0MB)
used = 0 (0.0MB)
free = 5242880 (5.0MB)
0.0% used
PS Old Generation
capacity = 67108864 (64.0MB)
used = 13446200 (12.823295593261719MB)
free = 53662664 (51.17670440673828MB)
20.036399364471436% used
13050 interned Strings occupying 1147280 bytes.
2.2、导出dump 文件
2.2.1、命令
jmap -dump:format=b,file=/tmp/HeapDump.hprof pid
参考