跳至主要內容

Jvm之jmap

Durant...大约 2 分钟jvmJVM 性能分析

1、JVM调优,性能分析命令

1、jmap指令的命令格式为:jmap [options] pid

选项说明
-heap查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况
-histo查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象并且会强制执行一次GC
-dump用jmap把进程内存使用情况dump到文件中,再用jhat分析查看,通常在写dump文件前会触发一次Full GC,所以dump文件里保存的都是Full GC后留下的对象信息
-dump:live保存堆中存活对象
-clstats显示Java堆中元空间的类加载器的统计信息
-finalizerinfo显示在F-Queue中等待Finalizer线程执行finalize方法的对象
-F当dump命令不响应的时候,可以强行dump

1.1、 jmap

jmap 22492  # 显示Java虚拟机进程的内存映像信息

1.2、jmap -heap

jmap -heap 22492 # 指定的垃圾回收算法的信息, 堆的配置信息
解读:可以看到JVM版本,并行垃圾回收器,以及堆内存配置,最大80M,NewRatio比例2,SurvivorRatio比例8。

1.3、 jmap -histo[:live]

jmap -histo 22492 # 显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名
jmap -histo:live 22492 # 显示存活对象,并且会执行一次GC,FGC?

1.4、jmap -dump


# 手动模式
     #手动获取堆内存全部信息
     jmap -dump:format=b,file=D:/dump.hprof 22492
     jmap -dump:live,format=b,file=<filename.hprof><pid>
     
# 主动模式(当OOM时dump当时的快照)
    -XX:+HeapDumpOnOutOfMemoryError:在堆溢出的时候可以储存快照
    -XX:HeapDumpPath=d:/dumps/:导出内存快照时保存的路径

MAT工具下载:https://eclipse.dev/mat/previousReleases.phpopen in new window
jdk1.8下载1.11.0版本,新版本需要jdk11

mat具体使用:https://blog.csdn.net/qq_33204709/article/details/128029367open in new window

具体:

2 jhat:JDK自带堆分析工具

     jhat  [ options ] [ hostid ]

     jhat d:\autoDump.hprof # 分析jmap dump 出来的文件,默认7000 端口
     
     jhat -port <port_number> <heap_dump_file> # 可以加上自定义端口


评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.8