python奇怪的内存泄漏问题
一般来说函数里生成的对象在函数退出后应该被回收,可是python貌似并没有,必须得显示的调用gc.collect。这是为什么?以下是测试数据
测试环境: macOS High Sierra 10.13.2
empty_python.py
import time
if __name__ == '__main__':
time.sleep(1000)
内存占用 2.7 MB
leak_python.py
import time
def garbage():
task = {'action': 'test', 'args': [1,2]}
if __name__ == '__main__':
for i in range(10000000):
garbage()
time.sleep(10000)
刚启动时内存 313.4MB 几秒钟后 237.3MB
gc_python.py
import time
def garbage():
task = {'action': 'test', 'args': [1,2]}
if __name__ == '__main__':
for i in range(10000000):
garbage()
time.sleep(20)
import gc
print gc.collect()
time.sleep(10000)
刚启动时313.4MB 几秒后237.3MB collect()输出后 4.6MB
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的编译器的问题?
OS 10.11.6 python2.7 python3.6均正常,内存无泄漏,你在终端里运行看看,我估计是你的编译器的问题