JVM:垃圾回收器 垃圾收集器分类 评估GC的性能指标

GC:垃圾回收或者垃圾收集器

一、垃圾收集器分类:

1.1按用于垃圾回收的线程数分类

分为串行垃圾回收器和并行垃圾回收器

指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束

在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过并行回收器和并发回收器,所以,串行回收默认被应用在客户端的Client模式下的JVM中

在并发能力比较强的CPU上,并行回收器产生的停顿时间要断于串行回收器

串行回收仍然与并行回收一样,采用独占式,使用STW机制

1.2按照工作模式分类

分为并发式垃圾回收器和独占式垃圾回收器

并发式垃圾回收器与应用程序线程交替工作,以尽可能减少应用程序的停顿时间

独占式垃圾回收器一旦运行,就停止应用程序中的所有用户线程,知道垃圾回收过程完全结束

1.3按照碎片处理方式分:

压缩式垃圾回收器和非压缩式垃圾回收器

压缩式垃圾回收器会在垃圾回收完成后,对存活对象进行压缩整理,消除回收后的碎片

非压缩式垃圾回收器不进行这步操作

1.4按工作的内存区间分

分为年轻代垃圾回收器和老年代垃圾回收器

二、评估GC的性能指标:

  1. 吞吐量:运行用户代码的时间占总运行时间的比例
  2. 总运行时间:程序的运行时间+内存回收的时间
  3. 垃圾收集开销:吞吐量的补数,内存回收的时间占总运行时间的比例
  4. 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间
  5. 收集频率:相对于应用程序的执行,收集操作发生的频率
  6. 内存占用:Java堆所占的内存大小

主要抓以上两点:

复制代码
吞吐量,暂停时间
吞吐量:比如:虚拟机总共运行了100分钟,其中垃圾收集花掉了1分钟,那吞吐量就是99%
高吞吐量和低暂停时间是一对相互竞争的目标,如果要选择以吞吐量优先,那么必然需要降低内存回收的执行频率,但是这样会导致GC需要更长的暂停时间来执行内存回收
现在标准:在最大吞吐量优先的情况下,降低停顿时间
相关推荐
猫头虎15 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
wgslucky15 小时前
jdk17 配置jvm参数中gc的日志及控制日志数量和大小
jvm·gc·-xlog
痴儿哈哈21 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
野犬寒鸦1 天前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
闻哥1 天前
Kafka高吞吐量核心揭秘:四大技术架构深度解析
java·jvm·面试·kafka·rabbitmq·springboot
星辰_mya1 天前
Elasticsearch线上问题之慢查询
java·开发语言·jvm
蓝帆傲亦1 天前
代码革命!我用Claude Code 3个月完成1年工作量,这些实战经验全给你
jvm·数据库·oracle
Codiggerworld2 天前
JVM内存模型——你的对象住在哪里?
jvm
马猴烧酒.2 天前
【面试八股|JVM虚拟机】JVM虚拟机常考面试题详解
jvm·面试·职场和发展
2301_790300962 天前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python