python话说会自己管理内存,实际上,对于占用很大内存的对象,并不会马上释放。举例,a=range(10000*10000),会发现内存飙升一个多G,del a 或者a=[]都不能将内存降下来。。
del 可以删除多个变量,del a,b,c,d
办法:
import gc (garbage collector)
del a
gc.collect()
马上内存就释放了
import gc
from time import sleep
class A(object):
def run(self):
L = range(100 * 100 * 100 * 40)
# L = None
# gc.collect()
if __name__ == "__main__":
a = A()
while True:
a.run()
sleep(1)
在本机执行的上诉代码的时候,通过htop 查看系统信息可以看到比执行前多了1G 的内存。 加了注释的代码之后就会看到内存会有1G 上下的浮动。