JVM修炼之路【12】- GC调优 、性能调优

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。

有些新手可能会有一点 疑问------ 这两者不是一回事吗??

其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存

只不过前面我们关注的侧重点在于 不合理的代码或者设计 会造成OOM 内存的不合适使用。

这一篇我们侧重于 垃圾回收器 做各种gc动作对于系统的影响,还有垃圾回收器的参数设置


GC调优的核心指标:

  • 吞吐量
  • 延迟

GC调优的主要工具

还是我们熟悉的内存监控工具 Prometheus+grafana

它也可以进行专业的GC监控

在线的GC日志分析网站:

优化JVM 基础参数

建议初始堆内存和最大堆内存一样大

调整每个线程的栈大小

根据不同的系统情况 我们来选择不同的垃圾回收器:

以下是 JDK 8 中一些常见的垃圾回收器及其适用场景:

年轻代垃圾回收器:

Serial GC:适用于内存小、单核CPU的环境,重视暂停时间的应用。

Parallel GC:适用于多核CPU的通用应用,注重吞吐量。

老年代垃圾回收器:

CMS GC:适用于对暂停时间要求较高的应用,如Web应用程序。在 CMS GC 中,年轻代使用并行垃圾回收器,而老年代使用CMS算法。

G1 GC:适用于大堆内存和对暂停时间敏感的应用程序。G1 GC 可以对整个堆进行更均衡的回收,避免了CMS GC 中的一些碎片问题,并且通常能够更好地控制暂停时间。


相关推荐
维诺菌2 小时前
k8s java应用pod内存占用过高问题排查
java·jvm·云原生·容器·性能优化·kubernetes
007php0074 小时前
百度面试题解析:synchronized、volatile、JMM内存模型、JVM运行时区域及堆和方法区(三)
java·开发语言·jvm·缓存·面试·golang·php
智海观潮5 小时前
JVM垃圾回收器、内存分配与回收策略
java·大数据·jvm
小杰帅气1 天前
内存管理C++
jvm
YuanlongWang1 天前
C#基础——GC(垃圾回收)的工作流程与优化策略
java·jvm·c#
白露与泡影1 天前
BAT 大厂 java高频面试题汇总:JVM+Spring+ 分布式 +tomcat+MyBatis
java·jvm·spring
それども1 天前
忽略Lombok构建警告
java·开发语言·jvm
专注于大数据技术栈1 天前
Java中JDK、JRE、JVM概念
java·开发语言·jvm
YuanlongWang1 天前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
顾漂亮1 天前
JVM底层攻坚
java·jvm·spring