垃圾收集器及对应算法总结

两个最基本的java回收算法:复制算法和标记清理算法
复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法
标记清理:一块区域,标记要回收的对象,然后回收,一定会出现碎片,那么引出
标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象
 
两个概念:新生代和老年代
新生代:初始对象,生命周期短的
老年代:长时间存在的对象
整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。
 
P.S: Serial New收集器是针对新生代的收集器,采用的是复制算法
Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理
Parallel  Scavenge(并行)收集器,针对新生代,采用复制收集算法
Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理
Parallel  Old(并行)收集器,针对老年代,标记整理
CMS收集器,基于标记清理
G1收集器:整体上是基于标记  整理  ,局部采用复制
 
综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
G1(Garbage-First)是JDK8中新增的垃圾收集器。它是一种分代垃圾收集算法,将堆内存划分为多个大小相等的区域(Region),通过并发标记、并发清理、分代回收等技术来实现垃圾回收。 G1的运作过程如下: 1. 初始标记(Initial Mark):暂停应用程序,只标记直接与根对象有关联的对象,速度很快。 2. 并发标记(Concurrent Mark):开启一个线程并发标记所有存活对象,速度较快,不会中断应用程序的执行。 3. 最终标记(Final Mark):暂停应用程序,完成所有存活对象的标记。 4. 筛选回收(Live Data Counting and Evacuation):根据每个Region中存活对象占比,动态计算出“最优”的回收集合,先回收那些垃圾最多的Region,将存活对象复制到其他Region。 5. 并发清理(Concurrent Cleanup):并发清理垃圾对象。 G1的主要特点是: 1. 分代收集:将堆内存划分为多个Region,每个Region可以根据需要被划分为Eden区、Survivor区和Old区,对应新生代、老年代和永久代。 2. 并发标记和清理:标记和清理的过程可以与应用程序并发执行,减少了暂停时间,提高了应用程序的响应速度。 3. 空间整合:G1会在碎片较多时进行空间整合,以提高内存的利用率。 4. 可预测性:G1可以通过设置目标停顿时间,来控制垃圾回收的时间,从而提高应用程序的可预测性。 总的来说,G1垃圾收集算法通过分代收集、并发标记和清理等技术,可以在保证应用程序响应速度的同时,提高垃圾回收的效率和内存利用率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值