【发布时间】:2015-01-16 15:50:15
【问题描述】:
我正在尝试重新实现(再一次...我知道...)python 中的一个简单网络,该网络由引用其他节点类(它们的子类)的节点类组成,我想知道如果我创建会发生什么递归网络(node1 -> node2 -> node3 -> node1)并意外丢失对任何节点的所有引用。
假设我有以下代码
class node():
def __init__(self):
self.children = []
def append(self, child):
self.children.append(child)
node1 = node()
node2 = node()
node1.append(node2)
node2.append(node1) # now the network is recursive
node1 = 0
# node1 is still referenced in node2.children so will not be deleted
node2 = 0
# now both node1 and node2 are not directly referenced by any variable
# but they are referenced by the two children instances
在最后一行代码之后,对 node1 和 node2 的所有引用都丢失了,但最初分配给节点的内存仍然包含对自己的引用。
node1和node2还会被销毁吗?
【问题讨论】:
标签: python memory-leaks