2017年4月3日
摘要: 增量式垃圾回收 为了控制最大暂停时间,通过逐渐推进垃圾回收即垃圾回收与mutator交替执行。 三色标记算法 以标记 清除算法为例使用三色标记算法。 利用降低吞吐量来缩短最大停顿时间。 基础 将GC中对象分成三种颜色: 白色:还未搜索过 灰色:正在搜索 黑色:搜索完成 增量式的GC标记 清除算法分成 阅读全文
posted @ 2017-04-03 00:33 suolu 阅读(1374) 评论(0) 推荐(0) 编辑
  2017年4月2日
摘要: 分代垃圾回收 理论支持:经验得出——"大部分的对象在生成后马上就变成了垃圾,很少有对象能活得很久"。 分代垃圾回收将刚生成的对象称为新生代,达到一定年龄(进过一次GC即一岁)的对象称为老年代,不同代的对象使用不同回收算法。 新生代对象执行GC称为新生代GC(minor GC)。 新生代对象存活一定次 阅读全文
posted @ 2017-04-02 23:00 suolu 阅读(1757) 评论(0) 推荐(0) 编辑
摘要: 保守式GC 保守式GC指“不能识别指针和非指针的GC”。 1. 不明确的根,寄存器、调用栈。全局变量空间等属于GC root,这些GC均不能识别出是指针还是非指针。 2. 指针的识别,在不明确的根的条件下可以已某种程度的精度来识别指针。 1. 是否被正确对其 2. 是否指向堆 3. 是否指向对象的头 阅读全文
posted @ 2017-04-02 21:17 suolu 阅读(2797) 评论(0) 推荐(0) 编辑
摘要: 基本算法 Mark Compact与Mark Sweep的第一阶段均为标记活跃对象,第二阶段则不同,压缩算法则是将活跃对象逻辑上移到一起。 Lisp2算法 对象头中增加forwarding指针,其用法与复制算法一样。 Lisp2的标记阶段与其他算法一样,其压缩算法则包括以下三个步骤: 设定forwa 阅读全文
posted @ 2017-04-02 00:17 suolu 阅读(1350) 评论(0) 推荐(0) 编辑
  2017年4月1日
摘要: 基本概念 GC复制算法将堆分成From和To两个内存块,当From被占满时GC将From中的存活对象复制到To中,同时将From和To交换。 通过递归遍历GC root(即采用深度优先)复制存活对象,对于已经复制过的标记其COPIED字段。 复制过的对象将在From的对象的forwarding记录T 阅读全文
posted @ 2017-04-01 00:30 suolu 阅读(4475) 评论(0) 推荐(1) 编辑
  2017年3月31日
摘要: 基本概念 在对象中引入计数器(无符号整数),用于记录有多少对象引用了该对象。 通过增减计数器实现对内存的管理。 分配对象时将计数器置1。 更新引用时先对新指定的对象进行计数器加,而后才对旧对象进行减。 在对计数器做减法时,判断其计数器是否等于0,等于0 表示为垃圾,即可进行回收。 在更新引用时就进行 阅读全文
posted @ 2017-03-31 01:18 suolu 阅读(2242) 评论(0) 推荐(0) 编辑
  2017年3月30日
摘要: 基本算法 标记 清除算法由 ==标记阶段== 和 ==清除阶段== 构成。 标记即将所有活动的对象打上标记。 清除即将那些没有标记的对象进行回收。 标记与清除 遍历GC root引用,递归标记(设置对象头中的标志位)对象。 标记时如果标志位表示已经标记过则可以跳过。 遍历对象有深度优先与广度优先两种 阅读全文
posted @ 2017-03-30 23:34 suolu 阅读(2956) 评论(0) 推荐(1) 编辑
  2017年3月28日
摘要: 事物 事物中的操作要么都成功要么都不做,这是事物的目的,也是事物模型与文件系统的重要特征之一。 扁平事物(Flat Transactions) 所有操作都处于同一层次,要么都做要么都执行要么都回滚,无法提交或回滚一部分。因为其模型简单而广泛使用。 带保存点的扁平事物(Flat Transaction 阅读全文
posted @ 2017-03-28 14:31 suolu 阅读(1029) 评论(0) 推荐(0) 编辑
  2017年3月24日
摘要: lock与latch 在数据库中lock与latch分别指不同的所。 latch:可分为互斥量(mutex)和读写锁(rwlock),目的在于保证数据库内部的结构中共享资源并发时能够正确操作,其对象主要是内存中的各种数据库的数据结构如LRU等。 lock:用来锁定数据库中的对象,如表、页、行。一般l 阅读全文
posted @ 2017-03-24 16:58 suolu 阅读(3229) 评论(0) 推荐(0) 编辑
  2017年3月22日
摘要: B+树 B+树中,所有记录节点都按照键值的大小顺序放在同一层叶子节点,各个叶子节点指针进行连接。 图中指针是单向的,但是书上的图是双向的,而且旋转应该也是双向才能完成) B+树插入处理 Leaf Page满 | Index Page 满|操作 | | No|No|直接插入到叶子节点 Yes|No|1 阅读全文
posted @ 2017-03-22 21:40 suolu 阅读(539) 评论(0) 推荐(0) 编辑