为什么这个python代码中的内存使用量会增加?

时间:2013-05-06 10:19:01

标签: python memory-management garbage-collection

我确信这是一个关于python和垃圾收集的天真问题。

我有一个在内存中创建大型数据结构的函数,然后返回一个整数。

我希望在调用函数之后,数据结构使用的内存将被释放。

但是,如果我理解下面的资源调用正在做什么(感谢这个SO post),那似乎并非如此。每次调用该函数时,python使用的总内存似乎都会增加。 (我使用的是Python 2.7.1。)

import resource
import random
def r(n):
    a = [random.randint(1,100) for i in range(1,n)]
    return n  # or sum(a)

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
z=r(100000)
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
z=r(100000)
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

我得到的,例如:

81584128
84389888
85995520

为什么内存使用量不断增加?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为这是因为每次调用该函数都会创建一个列表a。我会想到,只要函数退出列表就会被转储并释放已用过的空间,但可能情况并非如此,或者不会那么快。