python 内存回收

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,664评论 1 118
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,366评论 25 709
  • 现在已是凌晨一点半,还会继续像昨晚那样通宵睡不着吗? 自己为什么在这个年纪就睡不着觉?这个问题不知道问...
    Jboob阅读 120评论 0 0
  • 第十一届金鹰节你最期待什么? 当然是胡歌和赵丽颖获奖咯 其实要不是刘涛今年人气下降,也许会有呼声吧,,, 我们都知...
    段子手万千阅读 251评论 0 0
  • 今年过节不收礼。 2000年前后,江苏出现一名雄心勃勃的神秘客,一款新的保健品红遍大江南北——并不由于它的神...
    何远超阅读 175评论 0 0