没有合适的资源?快使用搜索试试~ 我知道了~
通过多空间复制算法执行老年代GC-togaf 9.2 full version
需积分: 42 16 下载量 124 浏览量
2021-07-11
19:23:32
上传
评论
收藏 21.47MB PDF 举报
温馨提示
1657.7 列车垃圾回收 如果我们没有考虑到这点会怎么样呢?打个比方,通过使用在第 4 章中提到的多空间复制 算法,就可以跟列车垃圾回收一样,在一次老年代 GC 中只针对老年代空间的一个块执行 GC 了。 在此我们来考虑一下图 7.16(a) 这样的状况。 老年代 GC 老年代 GC To 空间 From 空间 To 空间 From 空间 To 空间 From 空间 $heap[3]$heap[0] $heap[1] $heap[2] 图7.16 通过多空间复制算法执行老年代GC 对象群 A 到 C 形成了循环垃圾。在此状态下,如果我们将 $heap[1] 作为 From 空间, 将 $heap[0] 作为 To 空间,以此来执行多空间复制算法,结果会如何呢? 虽然 A 本来是垃圾,不过因为它被其他块引用了,所以会被当成活动对象而复制到 heap[0] 去。同样,B、C 也会被按顺序复制过去。 像这样,在循环垃圾对象群跨复数个块时,因为多空间复制算法只能将已经成为垃圾的 对象群进行部分移动,所以再怎么重复执行 GC,也没法回收这样的垃圾。 7.7.6 缺点 在列车垃圾回收中执行写入屏障所产生的额外负担,要比在 Ungar 的分代垃圾回收中执 行时所产生的更大,因此在吞吐量方面,列车垃圾回收要比 Ungar 的分代垃圾回收差一些。 不止是这样。实际上 minor_gc() 函数和 major_gc() 函数的伪代码也有个很大的陷阱, 那就是没有考虑到比车厢大的对象。列车垃圾回收是以每个对象都小于一个车厢为前提的。 本书中虽然没有提及,不过对于比车厢大的对象,需要将其安排到新生代空间和老年代 空间以外的堆,使用跟列车垃圾回收不同的方法来执行 GC。
资源推荐
资源评论
资源评论
烧白滑雪
- 粉丝: 28
- 资源: 3907
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功