Memory management 研究论文说';有实时参考计数和循环收集是可能的,但如何实现呢?

Memory management 研究论文说';有实时参考计数和循环收集是可能的,但如何实现呢?,memory-management,parallel-processing,garbage-collection,real-time,reference-counting,Memory Management,Parallel Processing,Garbage Collection,Real Time,Reference Counting,注意:应该有一个循环收集标签。循环收集确实是这里的主要主题,但我没有足够的分数来创建标记。而且我已经达到了标签的最大数量。此外,reference cycles标记也有意义。这也不存在 我有很多关于如何制作一种更好的计算机语言的想法,但我一直在为它制作一个最先进的垃圾收集器 我注意到苹果和微软(Windows8)正在转向引用计数。显然,人们发现常规的垃圾收集需要太多的开销内存,并且不喜欢内存太紧时的抖动 但是,如果我想要一种不受引用中循环限制的编程风格,那么正常的引用计数似乎不是一种改进,因为扫

注意:应该有一个循环收集标签。循环收集确实是这里的主要主题,但我没有足够的分数来创建标记。而且我已经达到了标签的最大数量。此外,reference cycles标记也有意义。这也不存在

我有很多关于如何制作一种更好的计算机语言的想法,但我一直在为它制作一个最先进的垃圾收集器

我注意到苹果和微软(Windows8)正在转向引用计数。显然,人们发现常规的垃圾收集需要太多的开销内存,并且不喜欢内存太紧时的抖动

但是,如果我想要一种不受引用中循环限制的编程风格,那么正常的引用计数似乎不是一种改进,因为扫描引用循环并正确处理它们需要对潜在引用循环进行多次传递的算法

现在有一些论文建议可以在程序执行的同时扫描循环,但我读不懂

例如,David F.Bacon和V.T.Rajan的“参考计数系统中的并发循环收集” “由DAVID F.BACON、CLEMENT R.ATTANASIO、V.T.RAJAN、STEPHEN E.SMITH和HAN B.LEE设计的纯引用计数垃圾收集器” 和 David F.Bacon、Perry Cheng和V.T.Rajan的垃圾收集统一理论

有谁能向我解释一下,如何找到所有的循环,包括连接的循环,并在试验的基础上,通过自引用量减少引用计数,并在对象发生变异时安全地进行

这似乎是一项艰巨的任务

我记得“主要是并发垃圾收集”,它是对脏对象或脏页面的重新扫描,但我不确定这是否是同一种事情

我玩过一点循环扫描,我确信没有一个局部算法可以跟踪循环,不管你在上面浪费了多少内存。它确实是一个非局部属性。没有循环标记这样的东西

有人懂并行算法吗?有人能给我解释一下吗

编辑: 那篇论文看起来很有希望。尽管假设我能理解它,但非阻塞并行算法是如此的困难,以至于发布的算法有缺陷是很常见的。如果可能的话,修复它们是很困难的,我从经验中知道这两个事实


我还想确切地知道他们所说的“滑动视图”是什么意思“:/

你的前提似乎可疑。AFAIK ObjC使用引用计数,因为基本上是永远的,唯一有点新的是大多数递增/递减操作都可以自动插入。对于WinRT来说,这是COM遗留技术与非侵入性和语言不可知性的愿望的结合(这也可能是COM开始使用refcounting的原因)。跨具有明显不同对象表示的多种语言进行跟踪非常困难。此外,内存管理的细节不应该对语言本身有任何影响,所以请继续尝试你的想法。IOS在新过渡到ARC(自动引用计数)之前使用了什么?我假设它就像安卓一样有一个真正的垃圾收集器。我知道苹果做了什么。他们在mac上安装了GC,但未能将其移植到iOS,因此他们在mac上放弃了GC。看起来是个糟糕的决定。