当前位置: 首页 > news >正文

【JVM性能调优】- GC调优实操思路

1、GC调优实操思路

   前面几点所提及的都是GC调优的一些方法论以及衡量指标,但在真正需要处理GC调优时,上面几点只能给你提供辅导,并不能建立完善的调优思路,因此,接下来再一同论述GC调优的具体实操思想。

   GC调优时,一般会根据Java程序所装配的垃圾收集器以及具体的GC日志来作为基础进行操作,但不同的垃圾回收器执行的GC日志都是不同的,因此并没有万能的调优策略可以满足所有的性能指标,GC优化要建立在具体的业务场景及环境中,才能达到事半功倍的效果。不过通常GC调优核心步骤如下:

  • ①明确优化目标
  • ②实施优化操作
  • ③跟踪优化结果

调优前首先需要确定的就是优化目标,到底是需要减少GC停顿,还是增大程序吞吐等,然后再根据目标排除GC日志,分析后根据日志中的分配速率、提升速率、GC频率、GC各阶段停顿时间等指标,实行具体的优化操作。

同时,也不必奢求一次优化到位,GC调优通常是需要多次进行的,一次优化往往无法达到目标预期,需要不断的根据优化后的GC日志再次制定优化策略,从而最终达到优化目标。

但GC调优的根本其实是在调“对象”,如果程序本身代码就存在问题,好比代码中存在频繁创建对象的逻辑,就算你调出花来也无济于事,必须还得从根源上解决问题,这种情况下应当采用jmap工具分析堆使用情况,查看对象分布,从而反向定位代码中的问题并加以解决。

2、GC优化总结

   凡是涉及性能调优的内容,几乎都必须建立在监控系统之上,不一定要全面,但至少能让调优前有指标数据可参考。对于监控系统中,JVM-GC这块建议统计的信息:

  • ①流量方面:流量峰值、流量均值、用活时间段等。
  • ②对象方面:分配速率、每个请求的分配均值/峰值、提升速率、每次提升总量均值等。
  • ③GC方面:MinorGC、FullGC停顿时长、GC触发间隔、GC回收总量等。
  • ..........

GC调优时的收益排序:改善代码 > 装配合适的GC回收器 > 重新设置内存比例/大小 > 调整JVM参数。

但需重点注意的是:上述的GC调优理论都是基于G1之前的分代垃圾收集器而言的,G1之后的不分代收集器,如:ZGC、ShenandoahGC等压根没必要刻意优化,自身的机制本就足够优异,而且后续的不分代收集器对外暴露的可操作参数也并不多。

http://www.lryc.cn/news/336153.html

相关文章:

  • 四川教育装备行业协会考察团走访云轴科技ZStack共话技术创新应用
  • KIVY 学习1
  • 在Go语言中使用select和channel来期待确定性行为
  • 【MATLAB源码-第19期】matlab基于导频的OFDM系统瑞利信道rayleigh的信道估计仿真,输出估计与未估计误码率对比图。
  • 坚持十天做完Python入门编程100题第三天加班
  • MSOLSpray:一款针对微软在线账号(AzureO365)的密码喷射与安全测试工具
  • uos安装lxml避坑记录
  • 518. 零钱兑换 II(力扣LeetCode)
  • 01串的熵(蓝桥杯)
  • Rust 基础语法和数据类型
  • 【Java SE】10 String类
  • web蓝桥杯真题:新鲜的蔬菜
  • 超声波清洗机能洗哪些东西?洗眼镜超声波清洗机推荐
  • [C++][算法基础]走迷宫(BFS)
  • C语言字符串左旋
  • Linux 中断会产生嵌套吗?
  • 嵌入式ARM版本银河麒麟操作系统V10SP1安装OPenGauss数据库
  • 深度学习八股文
  • jquery 自整理
  • MySQL | 加索引报错
  • 前端:自制年历
  • 9.手写JavaScript大数相加问题
  • FPGA开源项目分享——基于 DE1-SOC 的 String Art 实现
  • 通过 CLI 和引入的方式使用 React:基础入门
  • 第三资本:铸就辉煌非凡的资历
  • 基于激光雷达的袋装水泥智能装车系统有哪些优势?
  • 实战自动化修改主机名
  • 无人机GB42590接收端 +接收端,同时支持2.4G与5.8G双频WIFI模组
  • PVE系统的安装
  • 一辆汽车的节拍时间是怎样的?