jmap 的用途是为了展示java进程的内存映射信息,或者堆内存详情
常用的参数如下:
histo
jmap -histo pid 展示class的内存情况
展示的信息为编号,实例数,字节,类名
例如:
jmap -histo:live 2540 num #instances #bytes class name ---------------------------------------------- 1: 20981 908120 [C 2: 21015 504360 java.lang.String 4: 9999 159984 org.learn.util.User 5: 312 59216 [Ljava.lang.Object;
heap
jmap -heap pid 展示pid的整体堆信息
如:
$ jmap -heap 29030 JVM version is 16.3-b01 using thread-local object allocation. Parallel GC with 13 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 8436842496 (8046.0MB) NewSize = 5439488 (5.1875MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) NewRatio = 2 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 88080384 (84.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 87883776 (83.8125MB) used = 31053080 (29.614524841308594MB) free = 56830696 (54.197975158691406MB) 35.33425782706469% used From Space: capacity = 13828096 (13.1875MB) used = 196608 (0.1875MB) free = 13631488 (13.0MB) 1.4218009478672986% used To Space: capacity = 16384000 (15.625MB) used = 0 (0.0MB) free = 16384000 (15.625MB) 0.0% used PS Old Generation capacity = 156172288 (148.9375MB) used = 27098208 (25.842864990234375MB) free = 129074080 (123.09463500976562MB) 17.35148299805917% used PS Perm Generation capacity = 88080384 (84.0MB) used = 50847592 (48.492042541503906MB) free = 37232792 (35.507957458496094MB) 57.728622073218936% used
对应的说明如下:
Parallel GC with 13 thread(s) #13个gc线程 Heap Configuration:#堆内存初始化配置 MinHeapFreeRatio = 40 #-XX:MinHeapFreeRatio设置JVM堆最小空闲比率 MaxHeapFreeRatio = 70 #-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率 MaxHeapSize = 8436842496 (8046.0MB)#-XX:MaxHeapSize=设置JVM堆的最大大小 NewSize = 5439488 (5.1875MB) #-XX:NewSize=设置JVM堆的‘新生代’的默认大小 MaxNewSize = 17592186044415 MB #-XX:MaxNewSize=设置JVM堆的‘新生代’的最大大小 OldSize = 5439488 (5.1875MB) #-XX:OldSize=设置JVM堆的‘老生代’的大小 NewRatio = 2 #-XX:NewRatio=:‘新生代’和‘老生代’的大小比率 SurvivorRatio = 8 #-XX:SurvivorRatio=设置年轻代中Eden区与Survivor区的大小比值 PermSize = 21757952 (20.75MB) #-XX:PermSize=<value>:设置JVM堆的‘永生代’的初始大小 MaxPermSize = 88080384 (84.0MB) #-XX:MaxPermSize=<value>:设置JVM堆的‘永生代’的最大大小 Heap Usage: PS Young Generation Eden Space:#Eden区内存分布 capacity = 87883776 (83.8125MB) used = 31053080 (29.614524841308594MB) free = 56830696 (54.197975158691406MB) 35.33425782706469% used From Space:#其中一个Survivor区的内存分布 capacity = 13828096 (13.1875MB) used = 196608 (0.1875MB) free = 13631488 (13.0MB) 1.4218009478672986% used To Space:#另一个Survivor区的内存分布 capacity = 16384000 (15.625MB) used = 0 (0.0MB) free = 16384000 (15.625MB) 0.0% used PS Old Generation#当前的Old区内存分布 capacity = 156172288 (148.9375MB) used = 27098208 (25.842864990234375MB) free = 129074080 (123.09463500976562MB) 17.35148299805917% used PS Perm Generation#当前的 “永生代” 内存分布 capacity = 88080384 (84.0MB) used = 50847592 (48.492042541503906MB) free = 37232792 (35.507957458496094MB) 57.728622073218936% used
dump
jmap -dump:<dump-options> pid 把pid的整体堆信息输出
dump-options:
live
format=b
file=<file>
导出的文件可以供分析用,比如jhat或者mat,以便查找内存溢出原因
例如:
jmap -dump:live,format=b,file=tomcat.bin 29030
相关推荐
java程序性能分析thread dump和heap dump,dump文件:在故障定位(尤其是out of memory)和性能分析的时候,dump文件记录了JVM运行期间的内存占用、线程执行等情况。 heap dump:记录某一时刻JVM堆中对象使用情况,哪些...
JVM性能监控与调优实战课程,作为整篇课程的重中之重,非常值得同学们参考学习。课程前端讲解了JVM的性能监控和调优的概述,对调优的的方法和工具进行讲解学习,让同学们掌握方法,理解知识。课程的中间阶段我们进行...
jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机 jvm性能调优+内存模型+虚拟机
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx
long果 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)。讲解相当详细,值得一看。下载仅供参考学习,侵权联删。
JAVA JVM性能调优监控工具详解
JVM系列之性能调优参考手册(实践篇).pdf,资源分享达人
从实践中不断总结摸索的JVM调优经典之作,希望能给广大网友带来帮助!
jvm调试示例代码
JVM性能调优和常见问题!JVM结构和常见错误解决
jvm性能调优,主要讲解jvm性能调优和垃圾回收性能优化
面试题必问的jvm性能优化相关,如何在实际项目中优化jvm,解决项目中性能问题。提升系统的稳定性,以及可维护性。
JVM性能调优
JVM性能优化笔记 ------------------------------------------
个人JVM性能调优经验总结
Java助力需要jvm学习及优化与性能瓶颈分析参考
JVM性能监控方法之visualVM1
学习笔记——JVM性能调优之 jstat(csdn)————程序
代码包含了T01到T05,下载后建议使用markdwon软件食用,谢谢大家
jmap、jstack、jstat组合使用定位jvm问题