-- python垃圾回收机制 # Python的GC模块(GarbageCollection)-- 垃圾回收模块 # 主要运用了引用计数来跟踪回收垃圾; 1.引用计数; # 对象被创建或者复制,引用计数加1;--> __init__ # 对象引用被销毁,引用计数减1; --> __del__ # 对象就没有再被使用,释放其内存; 1.优点:实时性,任何内存一旦没有引用指向就会立刻被回收; 2.缺点:a.维护引用计数的额外操作,跟运行中内存分配,释放,引用赋值成正比,效率低; b.造成循环引用,对象之间相互引用,内存始终没有被释放; 如:a = list() b = list() a.append(b) b.append(a) print(a) print(b) >>[[[...]]] >>[[[...]]] 2.标记-清除 # 通过**检测方法(看不懂),将对象分成可达和不可达两部分,分别被保留或回收; # 底层采用的是链表将这些集合的对象连接在一起; # 缺点:过程效率不高; 3.分代回收 # 根据内存块存活时间,定义三代对象集合,存活的越久,越减少对它的垃圾收集频率; # 也就是说,对象经过垃圾收集次数越多,说明其存活的时间越长;
时间: 2024-11-11 08:35:01