垃圾回收GC的全拼是 Garbage Collection 其在维基百科的定义是: 在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为GC)是一种自动的内存管理机制。当一个电脑上的动态内存不再需要时,就应该予以释放,以让出内存,这种内存资源管理,称为垃圾回收(garbage collection)
垃圾回收算法有多种,先看看几个评价垃圾回收算法性能的几个方面,再具体看看各种算法的优缺点
- 吞吐量 throughput
- 最大暂停时间
- 堆使用效率
- 访问的局部性
一、 标记-清除算法 Mark-Sweep GC
如字面意思 mark-sweep 分为两个阶段:
- 标记阶段:从根集合出发,将所有活动对象及其子对象打上标记
- 清除阶段:遍历堆,将非活动对象(未打上标记)的连接到空闲链表上
优点
实现简单, 容易和其他算法组合
缺点
- 碎片化, 会导致无数小分块散落在堆的各处
- 分配速度不理想,每次分配都需要遍历空闲列表找到足够大的分块
- 与写时复制技术不兼容,因为每次都会在活动对象上打上标记
二、标记-压缩 Mark-Compact
和“标记-清除”相似,不过在标记阶段后它将所有活动对象紧密的排在堆的一侧(压缩),消除了内