JVM总结:使用jmap和jhat摸清线上系统的对象分布


prtyaa
prtyaa 2023-12-28 15:28:22 53737 赞同 0 反对 0
分类: 资源
用jstat就可以非常轻松便捷的了解到线上系统的运行状况,从新对象增速、Young GC触发频率以及耗时,再到对象进入老年代的增速 以及Full GC触发频率以及耗时,可以完全摸清楚线上系统的JVM运行情况,为可能要做的优化做准备。 接下来继续介绍两个平时工作里非常实用的工具,jmap和jhat。 这两个工具可以帮助我们观察线上JVM中的对象分布,了解到你的系统平时运行过程中,到底哪些对象占据了主角位置,他们占据了多 少内存空间,让你对你的系统运行有更加细致的了解。

这两个工具可以帮助我们观察线上JVM中的对象分布,了解到你的系统平时运行过程中,到底哪些对象占据了主角位置,他们占据了多 少内存空间,让你对你的系统运行有更加细致的了解。


2、使用jmap了解系统运行时的内存区域

其实如果单单只是要了解JVM的运行状况,然后去进行JVM GC优化,通常来说jstat就完全够用了,但是有的时候可能发现JVM新增对象的速度很快,然后就想要去看看,到底什么对象占据了那么多的内存。 如果发现有的对象在代码中可以优化一下创建的时机,避免那种对象对内存占用过大,那么也许甚至可以去反过来优化一下代码。

jmap -heap PID

这个信息会打印出来堆内存相关的一些参数设置,然后就是当前堆内存里的一些基本各个区域的情况

比如Eden区总容量、已经使用的容量、剩余的空间容量,两个Survivor区的总容量、已经使用的容量和剩余的空间容量,老年代的总容 量、已经使用的容量和剩余的容量。

但是这些信息大家会想了,其实jstat已经有了啊!对的,所以一般不会用jmap去看这些信息,毕竟他信息还没jstat全呢,因为没有gc 相关的统计。


3、使用jmap了解系统运行时的对象分布 命令:jmap -histo PID

jmap -histo PID 如果你只是想要简单的了解一下当前jvm中的对象对内存占用的情况,只要直接用jmap -histo命令即可,非常好用

打印出来的类似于这样:他会按照各种对象占用内存空间的大小降序排列,把占用内存最多的对象放在最 上面。


4、使用jmap生成堆内存转储快照

jmap -dump:live,format=b,file=dump.hprof PID

如果你仅仅只是看一个大概,感觉就只是看看上述那些对象占用内存的情况,感觉还不够,想要来点深入而且仔细点的,那就可以用jmap命令生成一个堆内存快照放到一个文件里去,用如下的命令即可:

jmap -dump:live,format=b,file=dump.hprof PID

这个命令会在当前目录下生成一个dump.hrpof文件,这里是二进制的格式,你不能直接打开看的,他把这一时刻JVM堆内存里所有对 象的快照放到文件里去了,供你后续去分析。


5、使用jhat在浏览器中分析堆转出快照 jhat dump.hprof -port 7000

接着就可以使用jhat去分析堆快照了,jhat内置了web服务器,他会支持你通过浏览器来以图形化的方式分析堆转储快照

使用如下命令即可启动jhat服务器,还可以指定自己想要的http端口号,默认是7000端口号:

jhat dump.hprof -port 7000

接着你就在浏览器上访问当前这台机器的7000端口号,就可以通过图形化的方式去分析堆内存里的对象分布情况了。

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  125
统信桌面专业版【全盘安装UOS系统】介绍  120
银河麒麟桌面操作系统安装佳能打印机驱动方法  111
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!