Python垃圾回收机制的原理是甚么
Python的垃圾回收机制是自动进行的,它基于援用计数的原理和循环垃圾搜集。
援用计数:Python中的每一个对象都有一个援用计数值,表示指向该对象的援用个数。当创建一个对象时,援用计数为1。当对象被援用时,援用计数增加;当对象不再被援用时,援用计数减少。当援用计数到达0时,对象不再被使用,可以被回收。
循环垃圾搜集:援用计数没法处理循环援用的情况,即两个或多个对象相互援用构成一个闭环。这类情况下,援用计数永久不会到达0,致使对象没法被回收。为了解决这个问题,Python使用循环垃圾搜集算法。
循环垃圾搜集算法的基本原理是标记-清除(mark and sweep)。它分为两个阶段:
循环垃圾搜集算法通过标记所有可达对象,将不可达对象(即没法被访问到的对象)清除并回收内存。这样,即便存在循环援用,只要这些对象不再被可达的根对象援用,它们终究也会被回收。
TOP