gc笔记

本文详细介绍了Java中七种不同的垃圾收集器,包括serial、parnew、parallelscavenge、serialold、parallelold、CMS和G1,以及四种垃圾收集算法:标记-清除、复制、标记-整理和分代收集算法。深入探讨了各种算法的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、GC收集器种类

1、serial垃圾收集器
单线程、复制算法

2、parnew垃圾收集器
多线程、复制算法

3、parallel scavenge收集器
多线程、复制算法、引入吞吐量概念(优化版parnew)

4、serial old
单线程、标记整理算法

5、parallel old
多线程、标记整理算法

6、CMS
多线程、标记清除算法(Mark-Sweep)

7、G1
多线程、标记整理算法、引入按区域管理概念

二、收集算法

1、标记 -清除算法(Mark-Sweep)
主要缺点有两个:
(1)效率问题:标记和清除过程的效率都不高;
(2)空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致,碎片过多会导致大对象无法分配到足够的连续内存,从而不得不提前触发GC,甚至Stop The World。

2、复制算法(Copying)
主要缺点有两个:
(1)效率问题:在对象存活率较高时,复制操作次数多,效率降低;
(2)空间问题:內存缩小了一半;需要額外空间做分配担保(老年代)

3、标记-整理(Mark-Compact)
标记过程仍然与“标记-清除”算法一样
后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。

4、分代收集算法(Generational Collection)
新生代:复制算法
老年代:“标记-清理”或“标记-整理”算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值