PY垃圾回收

import sys

a = [2]
print(sys.getrefcount(a))  # 查看引用计数

 

 

// object.h
struct _object {
  Py_ssize_t ob_refcnt; # 引用计数值
  struct PyTypeObject *ob_type;
} PyObject;



a = [2] b = [3] a.append(b) b.append(a)  # 循环引用

del a # 减少引用计数
a=None

 

标记清除

从跟对象不断访问可达点,然后不可达点标灰,然后清除

分代回收

import gc

print(gc.get_threshold()) # 每一代清除的阈值 变量个数

'''
0 一开始创建的变量 双向链表的存储形式 ; 每隔一段时间执行一次;将没有被清除的放入下一代
1 双向链表的存储形式 ; 每隔一段时间执行一次;将没有被清除的放入下一代
2 双向链表的存储形式 ; 每隔一段时间执行一次;将没有被清除的(常驻变量)
'''

 

posted @ 2020-06-22 15:36  慕沁  阅读(143)  评论(0)    收藏  举报