系列六、GC垃圾回收【四大垃圾算法-标记清除算法】

一、概述

标记清除算法分为两个阶段,即:标记和清除两个阶段,先标记出要回收的对象,然后统一回收这些对象。形如:

老年代一般是由标记清除或者标记清除 + 标记压缩的混合实现。

二、原理

用通俗的话解释一下标记清除算法,就是当程序运行期间,如果可以使用的内存被耗尽的时候,GC线程就会被触发并将程序暂停,随后将要被回收的对象标记一遍,最后统一回收这些对象,最终统一回收这些对象,完成标记清理工作后,接下来便让应用程序恢复运行。

主要进行两项工作,第一项是标记,第二项是清除:

标记:从引用根节点开始标记遍历所有的GC Roots,先标记出需要回收的对象;

清除:遍历整个堆,把标记的对象清除。

缺点:此算法需要暂停整个应用,会产生内存碎片

相关推荐
淡海水21 小时前
05-02-源码-Boehm GC标记阶段
算法·unity·c#·游戏引擎·gc
步步为营DotNet1 天前
从分代预算到 DATAS:.NET GC 调优到底在调什么
c#·.net·内存管理·gc·datas
淡海水1 天前
05-03-源码-Boehm GC分配与碎片管理
开发语言·算法·unity·c#·游戏引擎·gc
狂奔的sherry5 天前
JRuby 多线程反引号偶发 127:GC 提前释放了 posix_spawn 的 argv
java·linux·ruby·gc·jruby
淡海水5 天前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
淡海水7 天前
03-02-架构篇-Boehm GC架构解析
unity·架构·c#·gc·boehm
淡海水9 天前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
淡海水9 天前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
淡海水10 天前
02-04-原理篇-GC Roots与对象图遍历
算法·unity·c#·图·gc·遍历·roots
hez201011 天前
一行代码在 .NET 项目里启用 Satori GC
c#·.net·.net core·gc·clr