面试题答案
一键面试del语句的角色及与引用计数的关系
- del语句角色:
del
语句用于删除变量名与对象的绑定关系。它并不是直接删除对象本身,而是切断变量对对象的引用。 - 与引用计数关系:Python采用引用计数为主,分代收集为辅的垃圾回收机制。引用计数是指每个对象都记录有多少个引用指向它。
del
语句执行时,会减少对象的引用计数。当引用计数减为0时,对象的内存会被立即释放。
del语句删除对象时垃圾回收机制的具体动作
- 减少引用计数:
del
语句执行后,被删除变量所指向对象的引用计数减1。 - 判断引用计数:若引用计数变为0,Python会立即回收该对象占用的内存空间,包括对象自身以及对象内部引用的其他对象(如果这些内部对象引用计数也变为0)。
- 触发其他垃圾回收机制:如果
del
操作导致某一代的对象数量达到一定阈值(分代收集机制),则会触发相应代的垃圾回收扫描,检查并回收那些可能存在的循环引用对象(即使引用计数不为0,但相互引用形成环的对象)。