如何解决为什么mark-compact比mark-copy慢?
有句话说,标记紧凑比标记复制慢。但为什么?由于这两种算法都需要移动活动物体。
解决方法
与几乎所有与垃圾回收有关的事情一样,这很复杂。
直观的推理是,标记紧凑需要跨所有对象(可到达和不可到达)进行额外遍历,以找到需要压缩的可到达对象。此外,与从空间到空间复制相比,在压缩过程中(通常)需要在对象上固定指针。 (或者,如果您不精简,则需要在其他方面支付性能损失。)
然而,在“垃圾收集:自动动态内存管理算法” 中,Jones和Lins进行了理论分析,结果表明,标记清除和单代复制收集器的相对效率取决于您申请的“居留权”(r);即实时数据与堆大小的比率。超过特定驻留时间r * 时,标记扫描效率更高。
(请注意,r * 将小于0.5。单代复制收集器仅适用于r小于0.5。)
如果您真的想了解,建议您购买本书。甚至更好的是,Jones,Hosking和Moss撰写的最新的“垃圾收集手册:自动内存管理的艺术” 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。