账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    python奇怪的内存泄漏问题
    60
    0

    一般来说函数里生成的对象在函数退出后应该被回收,可是python貌似并没有,必须得显示的调用gc.collect。这是为什么?以下是测试数据

    测试环境: macOS High Sierra 10.13.2

    empty_python.py

    import time
    
    if __name__ == '__main__':
        time.sleep(1000)

    内存占用 2.7 MB

    leak_python.py

    import time
    def garbage():
        task = {'action': 'test', 'args': [1,2]}
    
    
    if __name__ == '__main__':
        for i in range(10000000):
            garbage()
        time.sleep(10000)

    刚启动时内存 313.4MB 几秒钟后 237.3MB

    gc_python.py

    import time
    def garbage():
        task = {'action': 'test', 'args': [1,2]}
    
    
    if __name__ == '__main__':
        for i in range(10000000):
            garbage()
        time.sleep(20)
        import gc
        print gc.collect()
        time.sleep(10000)

    刚启动时313.4MB 几秒后237.3MB collect()输出后 4.6MB

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部