我正在寻找详细描述python垃圾收集如何工作的文档.
我很感兴趣在哪一步做了什么.这三个系列中有哪些对象?每个步骤中删除了哪些对象?什么算法用于参考循环发现?
背景:我正在实施一些必须在很短的时间内完成的搜索.当垃圾收集器开始收集最老的一代时,它比其他情况"慢得多".花了比搜索更多的时间.我正在寻找如何预测它将收集最老一代的时间以及需要多长时间.
这是很容易预测它什么时候会收集最古老的一代与get_count()和get_threshold().这也可以用set_threshold().但是,我不认为collect()通过武力或等待预定的收集更好地决定是否更好.
我创建了一些python代码,它在循环中创建一个对象,并在每次迭代中用相同类型的新对象覆盖该对象.这样做了10.000次,Python每秒占用7mb的内存,直到我使用3gb的RAM.有没有人知道从内存中删除对象的方法?
我有一个树形结构.在这个树结构中,我将节点的孩子保持为双向链表:

(来源:双链表)
(由于创建此列表的广度优先搜索方法,我选择了此结构.)
现在我担心的是垃圾收集器是否可以自动销毁此列表.当然,我只保留对这三者的根节点的引用.Afaik GC的原理是它收集内存中的数据结构,其中没有指向任何引用.但是在双向链表中,每个节点都是从它的兄弟节点引用的,兄弟节点引用节点.因此总是会引用一个节点,GC永远不会收集它.
垃圾收集器会处理双向链表吗?
如果没有,最简单的收集方式是什么?