jmap
jmap,Java Memory Map。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。
jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。
常见命令格式
jmap pid 打印出某个java进程内存中所有‘对象’的情况。
jmap -heap pid 打印jvm heap的情况
jmap -histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
jmap -histo:live :打印jvm heap的直方图,但是只答应存活对象的情况
jmap -permstat:打印permanent generation heap情况
jmap -dump:format=b,file=outfile 3024 可以将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具(Memory Analysis Tool)或与jhat (Java Heap Analysis Tool)一起使用,能够以图像的形式直观的展示当前内存是否有问题。
例子
jmap -heap pid输出内容如下:
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 4276092928 (4078.0MB)
NewSize = 89128960 (85.0MB)
MaxNewSize = 1425014784 (1359.0MB)
OldSize = 179306496 (171.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 21807104 (20.796875MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 17592186044415 MB
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 296222720 (282.5MB)
used = 178707040 (170.42831420898438MB)
free = 117515680 (112.07168579101562MB)
60.32860679964049% used
From Space:
capacity = 2097152 (2.0MB)
used = 1792336 (1.7093048095703125MB)
free = 304816 (0.2906951904296875MB)
85.46524047851562% used
To Space:
capacity = 18874368 (18.0MB)
used = 0 (0.0MB)
free = 18874368 (18.0MB)
0.0% used
PS Old Generation
capacity = 224919552 (214.5MB)
used = 102162160 (97.42942810058594MB)
free = 122757392 (117.07057189941406MB)
45.42164480213797% used
42771 interned Strings occupying 4729976 bytes.
常见字段解释:
Heap Configuration: #堆内存初始化配置
MinHeapFreeRatio = 40 #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率
MaxHeapFreeRatio = 70 #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率
MaxHeapSize = 100663296 (96.0MB) #-XX:MaxHeapSize=设置JVM堆的最大大小
NewSize = 1048576 (1.0MB) #-XX:NewSize=设置JVM堆的‘新生代’的默认大小
MaxNewSize = 4294901760 (4095.9375MB) #-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小
OldSize = 4194304 (4.0MB) #-XX:OldSize=设置JVM堆的‘老生代’的大小
NewRatio = 2 #-XX:NewRatio=:‘新生代’和‘老生代’的大小比率
SurvivorRatio = 8 #-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值
PermSize = 12582912 (12.0MB) #-XX:PermSize=<value>:设置JVM堆的‘持久代’的初始大小
MaxPermSize = 67108864 (64.0MB) #-XX:MaxPermSize=<value>:设置JVM堆的‘持久代’的最大大小
本文来源于互联网:JDK常用命令(三)jmap