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

一、概述

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

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

二、原理

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

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

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

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

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

相关推荐
没有bug.的程序员2 天前
SOA、微服务、分布式系统的区别与联系
java·jvm·微服务·架构·wpf·日志·gc
没有bug.的程序员4 天前
JVM 安全与沙箱深度解析
java·jvm·安全·gc·gc调优
没有bug.的程序员8 天前
AOT 与 GraalVM Native Image 深度解析
java·jvm·测试工具·aot·gc·gc调优·graalvm native
没有bug.的程序员8 天前
云原生 + JIT:冷启动与预热优化
java·jvm·云原生·日志·gc·jit
没有bug.的程序员10 天前
GC 调优实战:从慢到快的真实案例
java·jvm·测试工具·gc·gc调优
没有bug.的程序员14 天前
GC日志解析:从日志看全流程
java·网络·jvm·spring·日志·gc
切糕师学AI15 天前
C# 如何回收整个 EF(DbContext)对象及其相关实体的内存?
c#·gc·垃圾回收·ef
styshoo16 天前
Go语言垃圾回收机制详解
golang·gc·垃圾收集
七夜zippoe1 个月前
JVM调优实战:从GC日志分析到参数配置(Xmx, Xms, XX:+)
java·jvm·gc·jit·垃圾回收器
Pluchon1 个月前
硅基计划6.0 柒 JavaEE 浅谈JVM&GC垃圾回收
java·jvm·数据结构·java-ee·gc