![]() |
1
1
作为 Holger says in a comment 参考计数
(用Python表示)。当e1.next.next也是e1,而e1.next.next.next是e1,依此类推时,e1的引用计数是多少?(或者,更简单地说,如果我们将e1.next设置为e1本身呢?) 传统的Lisp垃圾收集始于 Mark and Sweep algorithms the main wikipedia article 尤其是更全面的 Tracing Garbage Collection 文章。
是
查找缓存
,如果存在一些复杂的数据结构,例如基于磁盘B树的数据库或类似数据库,其中一些对象可能会被带到内存中使用一段时间,我们希望有一种快速的方法来确定它们是否仍然可用:
许多实现细节都源于诸如语言本身是否允许以及如何允许您使用指针等问题。带有指针操作的语言(如C++)使得很难进行其他语言(如GO)更容易的编译时分析。 Mike Ash's blog Martin R's comment ,对其中的几个问题和实际实现进行了很好的总结,包括在Swift中使用的两个问题。 围棋语言使用 escape analysis 在堆栈上分配一些对象,在垃圾收集堆中分配其他对象。 |
![]() |
codeforester · 测量GC暂停时间的最佳方法是什么? 7 年前 |
![]() |
Venki WAR · 需要解释G1的并行完整GC 7 年前 |
![]() |
Stephan_Berlin · 为什么CMS系列中的初始标记阶段 7 年前 |
![]() |
Bonsaisteak · 为什么年轻一代需要三个区域来收集垃圾? 7 年前 |
![]() |
goks · 如何清除熊猫的数据帧内存? 7 年前 |