Python中垃圾回收机制是如何工作的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1624个文字,预计阅读时间需要7分钟。
一、引用计数+Python+垃圾回收以引用计数为主,分代回收为辅。引用计数法的原理是每个对象维护一个引用计数器ob_refcnt,用来记录对象被引用的次数,也是用来追踪对象有多少引用指向它。
一、引用计数
Python 垃圾回收以引用计数为主,分代回收为辅。引用计数法的原理是每个对象维护一个ob_refcnt,用来记录对象被引用的次数,也就是用来追踪有多少个引用指向了对象,当发生以下四种情况的时候,对象的引用计数+1:
- 对象被创建,比如:a = 14
- 对象被引用,比如: b = a
- 对象被作为参数,传给函数,比如:func(a)
- 对象作为容器中的一个元素,比如:List = {a, ”a” , ”b”, 2}
与上述情况相对应,当发生以下四种情况时,对象的引用计数-1:
对象的别名被显式销毁,比如:del a
对象的别名被赋予新的对象,比如:a = 26
对象离开它的作用域,比如 func() 执行完毕时,函数里面的所有局部变量的引用计数都会减 1
将元素从容器中删除,或者容器被销毁
当对象的引用计数为 0 时,它将被 Python 虚拟机回收。
本文共计1624个文字,预计阅读时间需要7分钟。
一、引用计数+Python+垃圾回收以引用计数为主,分代回收为辅。引用计数法的原理是每个对象维护一个引用计数器ob_refcnt,用来记录对象被引用的次数,也是用来追踪对象有多少引用指向它。
一、引用计数
Python 垃圾回收以引用计数为主,分代回收为辅。引用计数法的原理是每个对象维护一个ob_refcnt,用来记录对象被引用的次数,也就是用来追踪有多少个引用指向了对象,当发生以下四种情况的时候,对象的引用计数+1:
- 对象被创建,比如:a = 14
- 对象被引用,比如: b = a
- 对象被作为参数,传给函数,比如:func(a)
- 对象作为容器中的一个元素,比如:List = {a, ”a” , ”b”, 2}
与上述情况相对应,当发生以下四种情况时,对象的引用计数-1:
对象的别名被显式销毁,比如:del a
对象的别名被赋予新的对象,比如:a = 26
对象离开它的作用域,比如 func() 执行完毕时,函数里面的所有局部变量的引用计数都会减 1
将元素从容器中删除,或者容器被销毁
当对象的引用计数为 0 时,它将被 Python 虚拟机回收。

