【python】python内存管理摘要

a = 1

id(a)  == id(1)

每次退出ipython重新进入,这个Id都会不一样

sys.getrefcount(a) 可以计数某个对象的引用次数,是原来的次数+1

垃圾回收

使用gc包 garbage collector

gc.collect() 手动垃圾回收

一般是自动垃圾回收,分配对象和取消分配对象差值高于某个阈值的时候才会回收垃圾,

使用函数gc.get_threshold() 获得阈值,默认为(700, 10, 10),后两个是分代回收的参数

分代回收的意义在于,越是长久的对象,我们越认为会存在更久,分为0代, 1代,2代三种

如果对象经过一次回收没有被回收,那么上升一代,(10, 10)的意思是,经过10次0代回收会进行一次1代回收,经过10次1代回收会进行一次2代回收

孤立的引用环的回收机制:

1、首先得到每个对象的引用次数

2、对每个对象i, 找到i引用的对象j,将j的引用次数减1

3、如果ref次数为0,除非引用别人或者更下游有引用,否则当作垃圾回收

原文地址:https://www.cnblogs.com/yesuuu/p/6208069.html