【发布时间】:2013-06-30 12:05:49
【问题描述】:
Read-Copy-Update (RCU) 是一种手动内存管理技术,在 Linux 内核中越来越流行。
是否可以设计一种语言和虚拟机,使用 RCU 而不是传统的垃圾收集器来回收无法访问的内存?
【问题讨论】:
-
是互斥算法,不是内存回收器。好吧,大多数情况下,无论如何。
-
好吧,我读过的所有描述都表明您可以在至少一个宽限期后释放旧数据,所以这似乎是相关的。
-
嗯。我看不出拥有一个 RCU 对象的活动“查看器”数量与任何其他引用计数实现有任何显着差异。所以我想说,“RCU 不是垃圾收集器,但它确实实现了类似于 Refcounting 本身的东西”,但在内部,RCU 更像是一种设计模式而不是 GC 。所以也许,这些不是您要寻找的机器人,而您一直在寻找的 GC 替代方案称为 ARC(自动引用计数),即编译器自动生成所有添加和释放引用调用的引用计数你。
-
“与任何其他引用计数实现有任何显着差异”。引用计数读屏障非常昂贵(通常是缓存未命中),而 RCU 读屏障非常便宜(并且可以是免费的)。这听起来对我来说是一个潜在的重大好处。
-
嗯,我希望有人回答 (a) 是,有或 (b) 不,这是不合适的,这就是原因,因为我无法知道它在内核空间之外是否可行共享内存实现是常态,即每个进程都有自己的共享内存 RCU 堆。我怀疑内核中的少数站点处理的对象总数约为 5000 个对象,而 GC 实现扩展到数十亿个对象可能没有太多共同点。
标签: memory-management garbage-collection rcu