垃圾回收算法和垃圾回收器

博客介绍了垃圾回收算法和回收器。算法包括标记清除、复制、标记整理和分代收集算法,不同算法适用于不同场景。回收器有serial、parNOW、parallel scavenge等,各有特点,如serial简单高效,CMS目标是获得最短停顿时间,G1可同时处理年轻代和老年代。

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

垃圾回收算法

**

  1. 标记清除算法: 标记所有要回收对象,标记结束后统一回收。标记清除分别效率较低,造成大量碎片。
  2. 复制算法: 将空间一分为二,每次用其中一块内存,将不需要的回收的对象复制到另外一块内存上,回收时将原来的半块区域全部回收。比较适合年轻代
    3.标记整理算法: 标记需要回收的对象,将不需回收的对象移向一端,然后清楚端界外的内存。比较适合老年代。
    分代收集算法:
    将堆分为年轻代和老年代,分别采用不同的算法。
    年轻代采用类似复制的算法,年轻代将内存分为一个Eden,两个survivor。每次使用一个Eden,和一个survivor,回收时,将他们复制到另一块survivor,然后清理他们。当Eden,survivor中存活的对象超过survivor需要老年代担保。
    老年代采用标记整理算法。

**

垃圾回收器

1.serial 单线程收集器,垃圾收集时必须暂停其他线程,直到结束。年轻代采用复制算法,老年代采用标记整理算法,简单高效,client下默认的算法,由于应用程序都比较小。
2 parNOW 年轻代收集器采用复制算法,serial的多线程版本,单线程与serial比并无优势,cpu多时优势较大。除了serial只有它可以与cms配合使用。
3.parallel scavenge 年轻代收集器采用复制算法,为了完成一个可控制的吞吐量的收集器。吞吐量和停顿不可能同时调优。因为GC时,垃圾回收总量不变,停顿时间减少,新生代内存减少,收集频率较快,吞吐量减少。
4. serial old serial的老年版本
5.CMS 目标:获得最短的停顿时间,适用互联网站或B/S系统的服务器。初始标记:GC root直接关联的对象 。并发标记:标记所有对象 。 重新标记:做修正并发清楚:清理对象。并发收集,地停顿。
6.G1 可以同时使用年轻代和老年代的收集器,采用标记整理算法。将堆分为多个region,追踪每个region的价值大小,优先收集价值大的region。整个过程包括
初始标记,并发标记,最终标记,筛选回收。初始标记和并发标记和CMS一样,最终标记主要记录变化的对象,筛选回收选取价值最大的region。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值