前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jvm-jmap(内存映像工具)的使用

jvm-jmap(内存映像工具)的使用

作者头像
逍遥壮士
发布2021-11-02 09:56:10
1.5K0
发布2021-11-02 09:56:10
举报
文章被收录于专栏:技术趋势

上文:JVM-jinfo的使用

jmap:Java内存映像工具是什么?可以干什么?

jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。

可以干什么?

java memory = direct memory(直接内存) + jvm memory(MaxPermSize +Xmx)

jmap的作用并不仅仅是为了获取堆转储快照,它还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等。

实现

查看进程的内存映像信息

打印出共享对象映射打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。

代码语言:javascript
复制
jmap 20220

对应 起始地址、映射大小、共享对象文件的路劲全称

查看Finalizer队列

打印等待终结的对象信息

代码语言:javascript
复制
jmap -finalizerinfo 20220

注意:这种只在Linux系统上面生效,在windows上面该命令查不出什么来。

Number of objects pending for finalization: 0 证明当前等待队列为0

显示 Java 堆详细信息

注意:该查询会导致

代码语言:javascript
复制
jmap -heap 20220

MinHeapFreeRatio

-XX:MinHeapFreeRatio设置JVM堆最小空闲比率

MaxHeapFreeRatio

-XX:MaxHeapFreeRatio设置JVM堆最大空闲比率

MaxHeapSize

最大堆内存3972MB

NewSize

新生代默认大小 83MB

MaxNewSize

新生代最大大小为 1324MB

OldSize

老年代大小 167MB

NewRatio

新生代和老年代的大小比率 2

SurvivorRatio

年轻代中Eden和Survivor的比率 8

MetaspaceSize

元空间大小 20.796875MB

CompressedClassSpaceSize

如果开启了-XX:+UseCompressedOops及-XX:+UseCompressedClassesPointers(默认是开启),则UseCompressedOops会使用32-bit的offset来代表java object的引用,而UseCompressedClassPointers则使用32-bit的offset来代表64-bit进程中的class pointer;可以使用CompressedClassSpaceSize来设置这块的空间大小

MaxMetaspaceSize

最大元空间大小 1073741824

G1HeapRegionSize

G1收集器启用,一个Region的大小可以通过参数-XX:G1HeapRegionSize设定,取值范围从1M到32M,且是2的指数。

显示class的内存情况

jmap -histo 20220

instances:实例数;

bytes:内存占用大小;

classs name:类名。

从大到小排序

jmap -histo:live 20220

生成文件

jmap -histo:live 20220>D://hong.log

打印类加载信息

jmap -clstats 20220

打印Java堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。

生成堆转储快照文件

注意:会暂停应用

代码语言:javascript
复制
jmap -dump:live,format=b,file=D://hong2.log 20220

参数:

option:选项参数,不可同时使用多个选项参数

pid:java进程id,命令ps -ef | grep java获取

executable:产生核心dump的java可执行文件

core:需要打印配置信息的核心文件

remote-hostname-or-ip:远程调试的主机名或ip

server-id:可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器

打开D盘中的文件。(这个文件在jhat中可以被分析)

参考:

https://blog.csdn.net/weixin_37335761/article/details/110506369

https://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html

https://docs.oracle.com/javase/9/tools/jmap.htm#JSWOR746

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 技术趋势 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
远程调试
远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档