内存泄漏 - 如何理解关于python内存回收模块gc中的这段代码?
PHPz
PHPz 2017-04-17 15:25:14
[Python讨论组]

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中却不起作用,内存释放不出来。

请教大家!!!

PHPz
PHPz

学习是最好的投资!

全部回复(1)
迷茫

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号