美文网首页
传统 GC 算法的优点与缺点

传统 GC 算法的优点与缺点

作者: zoro_x | 来源:发表于2016-09-05 13:11 被阅读116次

本篇是《垃圾回收的算法与实现》的读书笔记. 只是一种接近知识索引的形式.

GC 标记-清除算法。

最简单, 最古老的算法.

步骤

分成两步:
1.从根节点出发, 遍历所有可达的对象, 并在对象的头部添加标记.
2.遍历推, 回收所有的未标记的对象. 通常会有一个 free_list 来记录空闲的内存.

优点

  • 实现简单.
  • 与保守式的GC(对象不能被移动)兼容.

缺点

  • 碎片化.
  • 分配速度比较慢. 最坏情况下每次分配都需要遍历 free_list.
  • 与写时复制不兼容(每次GC都会写内存导致复制.)

改善方式

  • 多个空闲链表. 根据空闲块的大小选择存在不同的链表中.
  • 合并空闲块, 在清除的时候, 如果两个空闲块可以合并, 那么就合并成一个大的空闲块. 可以减少一部分的碎片.
  • BiBOP(Big Bag Of Pages) 方法. 将堆分块, 每一个块都只能分配固定大小的对象. 可以减少一些碎片, 但是降低了堆的使用效率.
  • 位图标记法. 标记在一个位图中进行(通常 1 bit 代表一个字). 这个提高清除的效率, 还可以与写时复制兼容.
  • 延迟清除法. 在分配的时候进行标记和清除. 可以降低最大暂停时间. 但是会导致分配的用时不稳定.

引用计数法

George E. Collins 在 1960 年提出来的. 现在 Apple 的 ARC 正式采用这种方式.

相关文章

  • 传统 GC 算法的优点与缺点

    本篇是《垃圾回收的算法与实现》的读书笔记. 只是一种接近知识索引的形式. GC 标记-清除算法。 最简单, 最古老...

  • java GC 循序渐进100 问 - 2. 算法与实现

    前言 本节会分类介绍下垃圾回收算法, 垃圾回收器的优点和缺点 先在脑中有个大致的框架 本节自测问题 GC 回收算法...

  • GC —— 垃圾回收机制认识与算法详解

    目录 GC相关概念 常见GC算法 引用计数算法核心思想实现原理实例优缺点 标记清除算法核心思想实现原理图示优缺点 ...

  • flex弹性布局

    flex弹性布局与传统布局的区别 传统布局优点:兼容性好缺点:繁琐 flex弹性布局优点: 简单缺点:兼容性不好 ...

  • Go GC

    1、什么是GC?2、为什么会有GC?3、GC的优点?4、GC的缺点?5、Go中的GC历史6、Go中的GC实现原理(...

  • 垃圾回收算法

    标记-清除算法 是最基础的GC算法,其他算法都是基于此算法,并且改进其缺点。 缺点: 效率问题 空间问题:标记清除...

  • Java基础 (14) 垃圾回收

    1)GC算法(各种算法的优缺点以及应用场景)2)内存对象的循环引用及避免3)内存回收机制、GC回收策略、GC原理时...

  • 垃圾回收算法优缺点对比

    垃圾回收算法优缺点对比 GC之前 说明:该文中的GC算法讲解不仅仅局限于某种具体开发语言。 mutator mut...

  • chapter-4 GC算法与种类

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

  • 喜欢与爱

    喜欢,是优点与缺点的较量。 爱,是优点与缺点的相容 当缺点战胜优点时, 喜欢便远去, 当缺点容进优点时, 爱便是长情

网友评论

      本文标题:传统 GC 算法的优点与缺点

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