GC算法

作者: 谭英智 | 来源:发表于2022-10-05 16:07 被阅读0次

引用计数

每个对象有一个引用计数,当对象被多引用一次,引用计数加一,当引用被释放,引用计数减一,当引用计数为零,则自动释放内存。

优点是:简单高效

缺点是:无法解决循环引用的问题

标记清除算法

从内存的根节点遍历内存块,把没有引用的内存块标记出来,并进行清除

优点:可以并行执行,通过增加写屏障,可以让标记-清除在不需要STW的时候进行

缺点:会损耗一定的计算,会出现大量内存碎片

复制回收算法

把堆分成大小相同的两个区域,当需要GC时,标记没有引用的内存,把标记为有引用的内存,拷贝到另一个区域,进行碎片整理,并清空原有的区域

优点:简单,碎片整理算法高效,适合大量内存被回收的场景,这样复制的内存就会少

缺点:需要中断程序,需要一块大小相同的内存块,比较浪费内存

标记压缩算法

对内存块进行标记-清除操作,最后再进行内存整理

优点:减少内存碎片,不浪费内存,适合大量内存不被回收的场景,这样整理过程中需要移动的内存块就少

分代算法

新的内存块是新生代内存

通过复制回收算法,对新生代内存进行回收

回收后,新生代还存活的对象进行观察,在进行了多次回收后,依然存活的对象,会被移动到老年代

通过标记压缩算法对老年代内存进行内存回收

相关文章

  • chapter-4 GC算法与种类

    GC 算法与种类 ■ GC的概念■ GC算法• 引用计数法• 标记清除• 标记压缩• 复制算法■可触及性■ Sto...

  • Lua GC

    一、GC的原理及其算法设计 不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法,...

  • GC算法基础

    英文原文:GC Algorithms: Basics译者:有孚译文地址:GC算法基础 在深入GC算法的实现细节之前...

  • java性能优化

    压测工具 基准性能数据 方面 代码算法 JVM gc算法 gc收集器

  • Android内存优化

    GC算法 当内存不足时,系统就会触发GC,GC采用垃圾标记算法为跟搜索算法 从图中可以看书obj4是科大的对象,标...

  • JVM GC算法与GC执行流程

    JVM GC算法 可达分析算法 GC执行流程 https://www.jianshu.com/p/314272e6...

  • 《垃圾回收的算法与实现》第2章GC标记-清除算法

    《垃圾回收的算法与实现》第2章GC标记-清除算法 垃圾回收系列连载: 第 1 章 学习GC之前 第 2 章 GC标...

  • HotSpot note (part-3)

    part 3 DefNew的GC属于Minor GC,使用copying算法进行垃圾收集,是Serial GC(-...

  • GC part 3

    part 3 DefNew的GC属于Minor GC,使用copying算法进行垃圾收集,是Serial GC(-...

  • 面试官,不要再问我“Java 垃圾收集器”了

    如果Java虚拟机中标记清除算法、标记整理算法、复制算法、分代算法这些属于GC收集算法中的方法论,那么“GC收集器...

网友评论

      本文标题:GC算法

      本文链接:https://www.haomeiwen.com/subject/vorpartx.html