jvm性能调优流程(参考)

jvm性能调优流程(参考)

1.大多数的java应用不需要进行GC优化,虚拟机内部已经有许多等等优化来保证应用的稳定运行,不要为了调优而调优。技术是为了更合适的实现进行采用的而不是为了使用技术而用技术。
2.应用上线前,应当考虑将JVM参数设置到最合适。
3.在进行GC优化前应确认项目的架构及优化是否已经没有优化空间。我们不能指望一个系统架构有缺陷或代码层次优化没有穷尽的应用,能通过GC优化将性能达到质的飞跃。
4.GC优化是一个系统而又复杂的工作,没有万能的调优策略可以满足所有性能指标。GC优化必须建立在深入了解各种垃圾回收器基础上,才能有事半功倍的效果。
5.处理吞吐量和延迟问题时,垃圾处理器能使用的内存越大,即java堆空间越大,垃圾收集效果越好,应用运行也将越流程。这就是GC内存最大化原则。
6.针对吞吐量、延迟、内存三个属性来说。JVM调优只能选择两个方面进行调优。(在硬件价格可以接受的情况下。个人更倾向于牺牲内存容量,提高吞吐量,降低延迟用以提高用户体验)
什么情况下需要调优

有以下几个方面

1.老年代持续上涨涨到设置的最大内存值
2.FullGC次数频繁
3.GC停顿时间过长。导致用户使用体验低
4.出现OOM异常
5.出现OutOfDirectMemory异常。
6.应用使用本地缓存且占用大量内存空间
7系统吞吐量与响应性能不高或下降
8.应用CPU占用过高不下或内存占用过高不下

调优概念

1.吞吐量:用户代码时间/(代码执行时间+垃圾回收时间).是评价垃圾收集器能力等等重要指标之一。是不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用程序达到的最高性能指标,吞吐量越高性能越好。
2.低延迟:stw越短,响应时间越好,评价垃圾收集器能力的重要指标,度量标准是缩短由于垃圾收集引起的停顿时间或完全消除因垃圾收集引起等等停顿,避免应用程序运行时发生抖动。暂停时间越短算法越好。
3.在使用GC算法时,必须确定我们的目标:一个算法只能针对两个目标之一(最大吞吐量、最小暂停时间)。或者在其中找到一个适合的平衡点。
4.MinorGC 尽可能多的收集垃圾对象。我们把这个称作MinorGC 原则,遵循这一原则可以降低应用程序FullGC的发生频率。FullGC较耗时。
5.堆大小的调整分析点
(1)统计MinorGC的持续时间
(2)统计MinorGC的次数
(3)统计FullGC的最长持续时间
(4)统计最差的情况下FullGC的频率
(5)根据业务系统的实际需求结合GC时间及频率进行各个区大小调整
6.优先吞吐量的垃圾回收器可以采用 ParalleeelGC+ParalleelOldGC (ps/po) 结合使用
7.响应时间优先的可以采用:CMS、G1

JVM常用参数

1.Xms:初始占用内存大小
2.Xmx:最大占用内存大小
3.Xss: 设定线程堆栈大小
4.Xmn:新生代大小
5.TraceClassLoading /TraceClassLoading 追踪类加载及卸载情况。

工具:

1.MAT
2.Jvisualvm
3.jconsole
4.Arthas

针对线上问题进行排查

1.cpu占用:top命令找到进程ID。再通过-Hp找到对应线程。 jstack打印栈信息抓住问题点。
2.内存占用:同样找到进程id,jmap -heap 看内存分配情况 jmap -histo 查看占用较多的对象 jmap -histo:live 查看占用较多的存活对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值