我确定这是一个关于 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
为什么内存使用量不断增加?
谢谢!
最佳答案
我认为这是因为每次调用该函数都会创建一个列表 a。我原以为一旦函数退出,列表就会被转储并释放使用的空间,但也许事实并非如此,或者不会发生那么快。
关于python - 为什么此 python 代码中的内存使用量增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16396619/