首页 > 其他分享 >JVM-实战篇-GC调优

JVM-实战篇-GC调优

时间:2023-12-29 16:00:29浏览次数:28  
标签:实战篇 回收 吞吐量 调优 GC 垃圾 JVM

1 GC调优

  • GC调优指的是对垃圾回收进行调优。GC调优的主要目标是避免由垃圾回收引起的程序性能下降。
  • GC调优的核心分为三部分:
  1. 通过JVM参数的设置;
  2. 特定垃圾回收器的JVM参数的设置;
  3. 解决由频繁的FULLGC引起的程序性能问题。
  • GC调优没有唯一的标准答案,重点学习调优的工具和方法。

2 GC调优的核心指标

2.1 吞吐量

  • 分类:业务吞吐量 和 垃圾回收吞吐量
  • 业务吞吐量:指的是在一段时间内,程序需要完成的业务数量。eg:在晚上8点到10点,支持用户查询500000条商品信息。
  • 垃圾回收吞吐量:指的是CPU用于执行用户代码的时间与CPU总执行时间的比值。吞吐量越高,垃圾回收的效率就越高。
  • 保证高吞吐量的常规手段有两条:
    • 优化业务执行性能,减少单次业务的执行时间;
    • 优化垃圾回收吞吐量。

2.2 延迟

  • 概念:延迟指的是从用户发起一个请求到收到响应这其中经历的时间。eg:所有的请求必须在5秒内返回给用户结果;
  • 延迟 = GC延迟 + 业务执行时间,所以如果GC时间过长,会影响到用户的使用。

2.3 内存使用量

  • 概念:内存使用量指的是Java应用占用系统内存的最大值,一般通过JVM参数调整,在满足上述两个指标的前提下,这个值越小越好。

3 GC调优的方法

发现问题 - jstat工具

  • jstat工具是JDK自带的一款监控工具,可以提供各种垃圾回收、类加载、编译信息等不同的数据;
  • 使用方法为:jstat -gc 进程ID 每次统计的间隔(毫秒) 统计次数

发现问题 - visualvm插件

  • VisualVm提供了一款Visual Tool插件,实时监控Java进程的堆内存结构、变化趋势以及垃圾回收时间的变化趋势。

发现问题 - Prometheus + Grafana

  • Prometheus用来采集系统或者应用的相关数据,同时具备告警功能;
  • Grafana可以将Prometheus采集到的数据以可视化的方式进行展示。

解决GC问题的手段

  • 优化基础JVM参数;
  • 减少对象产生;
  • 更换垃圾回收器;
  • 优化垃圾回收器参数。

4 案例实战

5 总结

GC调优的核心流程:

  1. 监控是否出现连续的FULL GC或者单次GC时间过长;
  2. 诊断并解决,一般通过四种途径解决:
    • 优化基础JVM参数;
    • 减少对象的产生;
    • 更换垃圾回收器;
    • 优化垃圾回收参数;

    3.在测试环境验证问题是否已经解决,最后发布上线。

标签:实战篇,回收,吞吐量,调优,GC,垃圾,JVM
From: https://www.cnblogs.com/daytoy105/p/17934537.html

相关文章

  • 乡村青年小永的AIGC变现之旅:从第001天开始,挑战100天极限
    AIGC学习+挑战+变现真实记录第一天,持续更新大家好,我是小永,一个来自贵州毕节小镇的中专生。这个地方可能很多人并不熟悉,但对我来说,这是我成长的地方,是我磨练自我的地方。中专毕业后,我尝试过各种工作,无论是工厂、农田,还是快递、辅警,我都在努力地生活。我深知自己不是一个容易认输的......
  • MMGCN: Multi-modal Graph Convolution Network for Personalized Recommendation of
    目录概符号说明MMGCN代码WeiY.,WangX.,NieL.,HeX.,HongR.andChuaT.MMGCN:Multi-modalgraphconvolutionnetworkforpersonalizedrecommendationofmicro-video.MM,2019.概推荐领域里比较早的多模态方法.符号说明\(\mathcal{U}\),userset;\(\mathc......
  • 【GC】Java中常见的垃圾回收算法
    Java中常见的垃圾回收算法有以下几种:标记-清除算法(Mark-and-Sweep):该算法分为两个阶段,标记阶段和清除阶段。在标记阶段,垃圾回收器会遍历堆中的对象,并标记所有可达对象。在清除阶段,垃圾回收器会遍历堆中的对象,清除所有未被标记的对象。复制算法(Copying):该算法将堆分成两个区域......
  • JVM-实战篇-内存调优
    1内存溢出和内存泄漏概念:内存泄漏:在Java中如果不在使用一个对象,但是该对象依然在GCROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内存泄漏引起的,所以后续没特殊说明讨论的均为堆内存泄漏。若持续发生内存泄漏,不管有......
  • 乡村青年小永的AIGC变现之旅:从第002天开始,挑战100天极限
    2023年12月28日:乡村青年小永的AIGC变现之旅:从第002天开始,挑战100天极限!AIGC学习+挑战+变现真实记录第一天,持续更新大家好,我是小永,一个来自贵州毕节小镇的中专生。这个地方可能很多人并不熟悉,但对我来说,这是我成长的地方,是我磨练自我的地方。中专毕业后,我尝试过各种工作,无论是......
  • AIGC未来在召唤:加入第六期AIGC大模型工程师和产品专家培训计划!
    近屿智能OJAC第六期AIGC星辰大海:大模型工程师与产品专家深度训练营,现在正在火热招生中,上千的学员已通过我们的课程已经实现转行、跳槽、升职、加薪,还不赶快行动起来,这是专为您量身定制的AI大模型学习之旅! 别人教您简单使用AIGC产品,例如ChatGPT和MJ,我们教您增量预训练、精调大模型......
  • RocketMQ系统性学习-SpringCloud Alibaba集成RocketMQ以及消费收发实战
    欢迎关注公众号:【11来了】发送“资料”可以下载Redis、JVM系列文章PDF版本!作者为在读研究生,目前研二,计划在公众号记录学习常用中间件笔记,以及明年更新面试经历!SpringCloudAlibaba集成RocketMQ最佳实践SpringBoot相对于SSM来说已经很大程度上简化了开发,但是使用SpringBo......
  • springcloud动力节点-01Eureka
    SpringCloudEureka1.SpringCloudEureka简介注册发现中心Eureka来源于古希腊词汇,意为“发现了”。在软件领域,Eureka是Netflix在线影片公司开源的一个服务注册与发现的组件,和其他Netflix公司的服务组件(例如负载均衡、熔断器、网关等)一起,被SpringCloud社区整合......
  • springcloud动力节点-05Sleuth
    SpringCloudSleuth1.什么是链路追踪官网:https://spring.io/projects/spring-cloud-sleuth链路追踪就是:追踪微服务的调用路径2.链路追踪的由来在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个请求都会开成一......
  • springcloud动力节点-04Hystrix
    SpringCloudHystrix1.前言1.1什么是服务雪崩   服务雪崩的本质:线程没有及时回收。不管是调用成功还是失败,只要线程可以及时回收,就可以解决服务雪崩1.2服务雪崩怎么解决1.2.1修改调用的超时时长(不推荐)将服务间的调用超时时长改小,这样就可以让线程及时回收,保证服......