2018年11月26日

Conservative GC (Part one)

摘要: [toc] 保守式GC 保守式GC(Conservative GC)指“不能识别指针和非指针的GC” 不明确的根 不明确的根(ambiguous roots),下面三类都可以作为根。 事实上是不明确的根 寄存器 调用栈 全局变量空间 以栈为例 :在调用栈中有调用帧(call frame),调用帧里面 阅读全文

posted @ 2018-11-26 06:43 Léon_The_Pro 阅读(353) 评论(0) 推荐(0) 编辑

Mark Compact GC (Part two :Two-Finger)

摘要: [toc] Two Finger算法 Robert A.Saunders 对堆执行两次搜索 前提 Two Finger 算法, 必须将所有对象整理成大小一致 。它没有在对象的头中设立forwarding指针,而是 在对象的域中设立forwarding指针 即可。 概要 Two Finger算法由一下 阅读全文

posted @ 2018-11-26 02:49 Léon_The_Pro 阅读(365) 评论(0) 推荐(0) 编辑

Mark Compact GC (Part one: Lisp2)

摘要: [toc] 什么是GC 标记 压缩算法 需要对标记清除和GC复制算法有一定了解 GC标记 压缩算法是由 标记阶段 和 压缩阶段 构成。 标记阶段和标记清除的标记阶段完全一样。之后我们要通过搜索数次堆来进行压缩。 Lisp2 算法的对象 Donald E.Knuth 对象结构如图示: Lisp2 算法 阅读全文

posted @ 2018-11-26 02:40 Léon_The_Pro 阅读(407) 评论(0) 推荐(0) 编辑

Copying GC (Part two :Multi Space Copying GC)

摘要: [toc] 近似深度优先搜索方法 Paul R.Wilson、Michael S.Lam、Thomas G.Moher,1991 这个方法只是近似深度优先搜索,但可以做到深度优先执行GC复制算法。 Cheney的GC复制算法 假设所有对象都是2个字,下图所示是对象间的引用关系。 下图所示是执行该算法 阅读全文

posted @ 2018-11-26 02:35 Léon_The_Pro 阅读(301) 评论(0) 推荐(0) 编辑

2018年11月20日

Copying GC (Part one)

摘要: [toc] GC复制算法 Copying GC,Marvin L.Minsky,1963 该算法吧某个空间里的活动对象复制到其他空间,把原空间里的所有对象进行回收。再此我们 把复制活动对象的空间称为From空间,将粘贴活动对象的空间称为To空间 。 先介绍Robert R.Fenichel与Jero 阅读全文

posted @ 2018-11-20 22:50 Léon_The_Pro 阅读(432) 评论(0) 推荐(0) 编辑

Reference Counting GC (Part two :Partial Mark & Sweep)

摘要: [toc] 部分标记清除算法 Partial Mark & Sweep,Rafael D.Lins,1992 之前我们说过,引用计数的循环引用问题。这个问题可以通过标记清除算法辅助解决。但是这种方法效率很低,标记清除是单纯的为了回收有循环引用的垃圾,而这种垃圾又是很少的。单纯的GC标记清除算法又是以 阅读全文

posted @ 2018-11-20 14:27 Léon_The_Pro 阅读(385) 评论(0) 推荐(0) 编辑

2018年11月19日

Reference Counting GC (Part one)

摘要: [toc] 引用计数法 George E.Collins.1960. 引用计数算法中引入了一个概念 计数器 。计数器代表对象被 引用的次数 ,它是无符号正整数用于计数器的位数根据算法和实现有所不同。本文结构如下图所示。 在变更数组元素等的时候会进行指针的更新。通过更新指针,可能会产生没有被任何程序引 阅读全文

posted @ 2018-11-19 22:48 Léon_The_Pro 阅读(308) 评论(0) 推荐(0) 编辑

2018年11月14日

Union File System

摘要: [toc] Union File System Union File System, 简称UnionFS,是一种为Linux,FreeBSD,和NetBSD操作系统设计的把其他文件系统联合挂载到一个挂载点的文件系统服务。 它通过使用branch把不同文件系统的文件和目录覆盖,形成一个一致的文件系统。 阅读全文

posted @ 2018-11-14 02:00 Léon_The_Pro 阅读(1122) 评论(0) 推荐(1) 编辑

2018年11月13日

Linux Cgroups

摘要: [toc] Linux Cgroups Namespace是用來實現進程之間的隔離,但是并没有限制其空间的大小。如果想要限制一个进程可以使用的空间,保证各个进程之间不会互相争抢就要用到 Cgroups。 Linux Cgroups(Linux Control Groups)提供了对一组进程及将来子进 阅读全文

posted @ 2018-11-13 19:48 Léon_The_Pro 阅读(440) 评论(0) 推荐(0) 编辑

Mark Sweep GC

摘要: [toc] 标记清除算法 GC 标记 清除算法是由 标记阶段 和 清除阶段 构成。标记阶段把所有活动的对象做上标记。清除阶段是吧没有标记的对象也就是非活动的对象进行回收。通过这两个阶段就可以对空间进行重新利用。 mark_sweep()函数 在执行GC前堆的状态 标记阶段 使用 mark_phase 阅读全文

posted @ 2018-11-13 04:49 Léon_The_Pro 阅读(299) 评论(0) 推荐(0) 编辑

导航