Python垃圾回收机制

本文详细探讨了Python的垃圾回收机制,包括引用计数、标记-清除和分代回收算法,着重阐述了如何处理循环引用问题。此外,还介绍了何时会触发垃圾回收以及gc模块的限制。
摘要由CSDN通过智能技术生成

首先Python的垃圾回收机制和Java略有不同:

  • python采用引用计数为主,标记-清除(Mark-Sweep)和分代清除为辅的机制,其中标记-清除和分代回收主要是为了处理循环引用的难题。
  • java中已经弃用了引用计数,采用可达性分析来收集垃圾,使用结合复制(Copying)算法(新生代)和标记-整理(Mark-Compact)算法(老年代)的分代回收来回收垃圾。

本博文主要分析总结Python的垃圾回收机制,所以这里就不细说java垃圾回收机制了,详情可参见我另一篇博文:Java垃圾回收机制

引用计数算法

  • 思想:python中一切皆为对象,对象的核心就是一个结构体PyObject,里面包含引用计数器ob_refcnt,当对象增加一个引用时,ob_refcnt+1;当引用它的对象被删除时,ob_refcnt-1;当引用计数ob_refcnt==0时,对象的生命结束。
  • 优点:
    • 简单
    • 实时性:当某个对象的引用计数为0时,内存马上就会被回收;不像其他需要等待特定的时机来进行垃
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值