python垃圾回收机制

2020-08-25  本文已影响0人  _karen

基本机制

1.引用计数器

1.双向环装链表refchain

在python中创建的任何对象都会放在refchain链表中,也就是说它保存着所有的对象。

image.png

**refchain会创建一些数据,源码中,PyObject和PyVarObject是基石,他们保存这其他数据类型公共部分,例如:每个类型的对象在创建时都有PyObject中的那4部分数据[上一个对象struct _object *_ob_prev;、下一个对象 struct _object *_ob_next、该对象的引用ob_refcnt、数据类型 *ob_type];list/set/tuple等由多个元素组成对象创建时都有PyVarObject中的那5部分数据[上一个对象struct _object *_ob_prev;、下一个对象 struct _object _ob_next、该对象的引用ob_refcnt、数据类型 ob_type、数据大小ob_size]。

1.2 引用计数器

引用计数器ob_refcnt:用来保存当前对象的引用计数器,顾名思义就是自己被引用的次数。当值被多次引用时候(比如 拷贝 赋值),不会在内存中重复创建数据,而是引用计数器+1 。 当对象被销毁时候同时会让引用计数器-1。

上一篇 下一篇

猜你喜欢

热点阅读