python 内存回收

2017-04-11  本文已影响47人  阿o醒

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 上下的浮动。

上一篇 下一篇

猜你喜欢

热点阅读