JAVA 垃圾回收器

本文介绍了Java垃圾回收器的分类、性能指标和发展历程,重点讲解了Serial、ParNew、Parallel、CMS和G1五种回收器的工作原理、特点及适用场景。并讨论了GC的吞吐量和暂停时间之间的平衡,以及如何通过CMS回收器实现低延迟。最后,提到了GC日志分析的重要性及其常用工具。
摘要由CSDN通过智能技术生成

GC分类:

按线程数分类:串行回收器和并行回收器

串行回收器:是指在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时用户线程被暂停,直至垃圾回收工作结束。串行回收默认被应用在Client模式下的JVM中

并行回收器:并行回收器可以运用多个CPU同时执行垃圾回收,因此提升了应用的吞吐量。并行回收默认被应用在Server模式下的JVM中

按照碎片处理方式分类:压缩式回收器和非压缩式回收器

按工作内存区间分类:年轻代垃圾回收器和年老代垃圾回收器

注:目前所有的垃圾回收器都使用了“stop-the-world”机制


性能指标:

吞吐量:运行用户代码的时间占总运行时间的比例;总运行时间=用户代码运行时间+垃圾回收时间;比如虚拟机总共运行了100分钟,其中垃圾回收用了1分钟,那么吞吐量=99%;高吞吐量的应用程序有更长的时间基准,能容忍较高的暂停时间,快速响应是不必考虑的;吞吐量优先,意味着在单位时间内STW的时间最短:0.2+0.2=0.4;大白话:单次GC时间可以长,但是总GC时间要短;吞吐量越高程序运行越快

暂停时间:一段时间内用户线程暂停,GC线程执行;暂停时间优先,意味着尽可能让单次STW的时间最短:0.1+0.1+0.1+0.1+0.1=0.5;低延迟对交互式应用程序非常重要

垃圾回收开销:

回收频率:

内存占用:


发展史:

1999年JDK1.3.1,Serial GC,第一款GC,ParNew GC是Serial GC的多线程版本

2002年JDK1.4.2,Parallel GC和Concurrent Mark Sweep GC

JDK6之后Parallel GC成为HotSpot默认GC

2012年JDK1.7,G1

2017年JDK9,G1成为HotSpot默认GC,以代替CMS

......


Serial回收器:串行回收

串行回收,适用于单核CPU

Serial

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值