Java Memory Map。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump。
jmap [ options ] pid
jmap [ options ] executable core
jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP
pid:目标进程的PID,进程编号,可以采用ps -ef | grep java 查看java进程的PID;
executable:产生core dump的java可执行程序;
core:将被打印信息的core dump文件;
remote-hostname-or-IP:远程debug服务的主机名或ip;
server-id:唯一id,假如一台主机上多个远程debug服务;
options参数
-dump:[live,] format=b, file=filename
-dump:[live,]format=b,file= 使用hprof二进制形式,输出jvm的heap内容到文件=. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
常用实例
#查看内存使用情况
jmap ‐heap 4728
#查看所有对象,包括活跃以及非活跃的
jmap ‐histo <pid> | more
#查看活跃对象
jmap ‐histo:live <pid> | more
#将内存使用情况dump到文件中
jmap -dump:format=b,file=dump_tomcat_4728.dat 4728
# 通过jhat对dump文件进行分析
jhat ‐port <port> <file>
jhat -port 9999 dump_tomcat_4728.dat
#即将垃圾回收对象个数
jmap -finalizerinfo 32417
#打印Java堆的类加载器统计信息
jmap -clstats 21168
jmap -permstat 19570
# 打印等待回收的对象信息
jmap -finalizerinfo 21168
堆栈概要信息
Heap Configuration:#堆内存初始化配置
MinHeapFreeRatio = 40 #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率
MaxHeapFreeRatio = 70 #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率
MaxHeapSize = 268435456(256.0)#-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堆的‘永生代’的最大大小
Heap Usage:
PS Young Generation
Eden Space:#Eden区内存分布
capacity = 71630848 (68.3125MB)
used = 4272376 (4.074455261230469MB)
free = 67358472 (64.23804473876953MB)
5.964435881032708% used
From Space:#其中一个Survivor区的内存分布
capacity = 8912896 (8.5MB)
used = 0 (0.0MB)
free = 8912896 (8.5MB)
0.0% used
To Space:#另一个Survivor区的内存分布
capacity = 8912896 (8.5MB)
used = 0 (0.0MB)
free = 8912896 (8.5MB)
0.0% used
PS Perm Generation#当前的 “永生代” 内存分布
capacity = 59506688 (56.75MB)
used = 59312368 (56.56468200683594MB)
free = 194320 (0.1853179931640625MB)
99.67344847019548% used