如何理解关于python内存回收模块gc中的这段代码?
1、例如:
import gc
import sys
gc.set_debug(gc.DEBUG_STATS|gc.DEBUG_LEAK)
a=[]
b=[]
a.append(b)
print 'a refcount:',sys.getrefcount(a)
print 'b refcount:',sys.getrefcount(b)
del a
del b
print gc.collect()
不能进入垃圾,
a,b都被切断,而且a.append(b)
也不存在循环,为什么还是无法回收垃圾?
2、还有一个问题
我在windows中有一个数组a[]
,里面放了10k+条数据,内存显示60%,在del a
、gc.collect()
之后内存立马降至52%;
但是同样的代码操作在centos中却不起作用,内存释放不出来。
请教大家!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你都显式地删除了这两个变量,并且你也说了,
不存在循环引用
,那就直接被删掉了呗,哪还有垃圾?这样就可以看到垃圾收集的效果了