我在python 2.7编写的长期运行的python脚本中使用了很多列表。 我使用 pympler来识别泄漏的内存,我发现列表对象内存正在增加。但是我已经清除了每次迭代中的所有列表。 RES内存正在大幅增加。执行3分钟后,脚本需要 130 MB的RES内存,我已清除所有列表并删除了每次迭代中引用的所有对象。 我使用:
清除列表 del list1[:]
我删除了使用以下内容引用的对象:
obj=demo_class()
some code
del obj
请帮我减少RES记忆?
谢谢PyNico,我通过删除对象的引用并手动使用gc.collect()来尝试它,但它没有效果。
我在我的脚本中使用了4个词典。当我使用pympler运行我的脚本来查找内存泄漏时,我发现列表对象的大小增加得非常惊人。这些列表包含这些词典的关键。这些列表是python词典的构建实现吗?
答案 0 :(得分:1)
看看这个。它解释了为什么del关键字没有清除内存 - > http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm
您应该删除对象的所有引用,然后使用gc.collect()