素材牛VIP会员
如何理解关于python内存回收模块gc中的这段代码?
 ka***13  分类:Python  人气:838  回帖:1  发布于6年前 收藏

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 agc.collect()之后内存立马降至52%;
但是同样的代码操作在centos中却不起作用,内存释放不出来。

请教大家!!!

 标签:内存泄漏python

讨论这个帖子(1)垃圾回帖将一律封号处理……

Lv4 码徒
那***n 产品经理 6年前#1

你都显式地删除了这两个变量,并且你也说了,不存在循环引用,那就直接被删掉了呗,哪还有垃圾?

a=[]  
b=[]  
a.append(b)  
b.append(a)  
del a  
del b  
print gc.collect() 

这样就可以看到垃圾收集的效果了

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取