jvm调优一(工具使用)

本文详细介绍了JVM调优过程,包括如何使用jstat、jmap和jhat进行性能监控与内存分析,以及如何预估系统需求并调整参数配置。通过监控新生代对象增长速率、GC频率和耗时,分析对象生存状态和老年代增长,指导进行优化决策。此外,讨论了-Xms和-Xmx的区别,并强调了合理设置内存分配参数以减少Full GC的影响。
摘要由CSDN通过智能技术生成

如何知道新生代对象增长速率

Linux中输入命令jstat –gc PID 1000 10,可观察10次,每次间隔一秒,eden区增长情况,显示的数据中内存相关的单位是kb,时间的单位是秒

young gc触发频率及每次平均耗时

eden区大小除以新生代对象增长速率,即可知多久触发一次young gc。
jstat –gc PID命令可知系统迄今为止young gc的总次数YGC,以及young gc的总耗时 YGCT,相除即可得平均耗时

每次young gc后存活对象平均有多少

知道了young gc频率,再使用命令jstat –gc PID young gc周期 统计次数,可得每次young gc后eden,survivor,老年代的内存变化,即可算出young gc后平均存活对象大小,和老年代的增长速率

Full gc的触发频率与平均耗时

根据上一条可计算出老年代中对象的增长速率,再用老年代的大小除以增长速率,即可知平均多久触发一次full gc
jstat –gc PID命令可知系统迄今为止full gc的总次数FGC,以及full gc的总耗时FGCT,相除即可得平均耗时

如果只是观察jvm的运行情况,进行jvm 的gc优化,jstat够用,但有时新增对象太快,想看看到底哪些对象占据了主角,占用了多少内存,jmap和jhat可以观察到线上jvm中对象的分布。jmap –histo PID可以查看对象占用内存排序,降序排序

如何生成对象占用快照

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

如何分析快照

jhat dump.hprof –port 7000

预估性优化

系统开发完毕之后,自行估算系统每秒大概多少请求,每个请求会创建多少对象,占用多少内存,机器应该选用什么样的配 置,年轻代应该给多少内存,Young GC触发的频率,对象进入老年代的速率,老年代应该给多少内存,Full GC触发的频率。这些东西其实是可以根据你自己写的代码,大致合理的预估一下的。在预估完成之后,就可以采用之前多个案例介绍的优化思路,先给自己的系统设置一些初始性的JVM参数 比如堆内存大小,年轻代大小,Eden和Survivor的比例,老年代的大小,大对象的阈值,大龄对象进入老年代的阈值,等等。优化思路其实简单来说就一句话:尽量让每次Young GC后的存活对象小于Survivor区域的50%,都留存在年轻代里。尽量别让对象 进入老年代。尽量减少Full GC的频率,避免频繁Full GC对JV

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orcharddd_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值