考虑以下代码
from collections import OrderedDict
import gc
gc.set_debug(gc.DEBUG_UNCOLLECTABLE | gc.DEBUG_SAVEALL)
def main():
leaking = OrderedDict()
leaking[('x', 'y')] = 4
leaking[('z', 'w')] = 4
return
main()
gc.collect()
print(gc.garbage)
可以看到记忆正在泄漏,
使用objgraph
似乎是由OrderedDict
中的循环引用引起的,这似乎与python http://bugs.python.org/issue9825中的这个旧错误有关(但标记为已关闭)
使用leaking.clear()
似乎没有帮助
这是一个已知的错误吗?有没有办法让我解决它(有序指令由第三方库返回)?
我正在使用python 2.7.10