分布式垃圾回收中的引用计数方案详解
1. 引用计数方案概述
引用计数方案主要分为两大类:
- 直接引用计数算法
- 间接引用计数算法
直接引用计数算法包含简单引用计数、Lermen 和 Maurer 变体以及 Rudalics 变体;间接引用计数算法则包括加权引用计数和局部引用计数。下面将详细介绍这些不同的方案。
1.1 直接引用计数算法
这类算法直接统计系统中对象的引用数量。当对象 r 的引用数量为 0 时,该对象就成为垃圾,可以被回收。每次复制对象 r 的引用时,会向对象 r 发送一个增量消息,同时将包含 r 引用的复制消息发送到接收节点。根据不同的算法,参与者之一会发送确认消息(ack 消息)。算法必须确保在参与者发送减量消息之前,确认消息已被正确接收。由于所有讨论的机制都使用相同的机制来表示 r 引用的删除(即无确认消息的简单减量消息),因此在图形表示中主要关注引用的复制。假设有三个节点参与,分别用方块表示,节点 R 包含对象 r,节点 S 包含对象 s 且 s 持有 r 引用,s 将该引用复制到节点 T 上的对象 t。
1.1.1 简单引用计数
简单引用计数是引用计数的最简单解决方案。在复制引用之前,会向对象发送增量消息,通过发送确认消息来确认增量消息的接收,只有在收到确认消息后才会发送复制消息。对象 s 只有在增量消息得到确认后才能发送减量消息。其协议如下:
Initr:
integer r.refCountr = 0;
CRs:
[ s.refCounts > 0 or
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



