循环引用与分带回收

2019-03-20  本文已影响0人  aq_wzj

循环引用

python通过标记清除解决

变量分为两块, 名与值

名: 存放在栈区, 存变量名与值的内存地址

值: 存放在堆区

操作与访问变量

操作的时候: 我们只能操作堆区, 只能改变值, 不可以操作变量名

访问的时候: 只能访问栈区(变量名)

通过栈区能访问到的对象为可存活对象

分带回收

Cpython的垃圾回收机制不能无时无刻的进行扫描, 会影响效率

python通过分代回收解决

多次扫描后依然存活的值放入老一代

其他的放在新批次

垃圾回收扫描的时候

老批次扫描频率低

新批次扫描频率高

上一篇 下一篇

猜你喜欢

热点阅读