清除列表元素后,python列表不释放内存

时间:2015-04-14 05:11:49

标签: python python-2.7 memory

我在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词典的构建实现吗?

1 个答案:

答案 0 :(得分:1)

看看这个。它解释了为什么del关键字没有清除内存 - > http://effbot.org/pyfaq/why-doesnt-python-release-the-memory-when-i-delete-a-large-object.htm

您应该删除对象的所有引用,然后使用gc.collect()