版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cpongo4/article/details/89227268
原创文章,转载请注明出处
《垃圾回收的算法与实现》笔记
GC 复制算法
- 只把某个空间里的活动对象复制到其他空间,把原空间里的所有对象都回收掉。
名词解释:
From 空间
:复制对象的原空间。
To 空间
:粘贴活动对象的新空间。
当 From 空间被完全占满时, GC 会将活动对象全部复制到 To 空间。当复制对象全部完成后,此算法会把 From 空间和 To 空间互换,GC 也就结束了。 From 空间必须和 To 空间大小完全一致。
GC 复制算法的 copying() 函数
1 |
copying() { |
GC 复制算法的 copy() 函数(copy() 函数将作为参数给出的对象复制,再递归复制其子对象)
1 |
copy(obj) { |
GC 复制算法的优缺点
优点
优秀的吞吐量
它只搜索并复制活动对象,堆越大,差距越明显。
可实现高速分配
不会发生碎片化
与缓存兼容
缺点
- 堆使用效率低下
- 不兼容保守式 GC 算法
- 递归调用函数