面试题答案
一键面试Python对象生命周期主要阶段
- 创建阶段:当执行代码创建对象时,如
a = 1
,Python会在内存中为对象分配空间,并初始化其内部状态。 - 使用阶段:对象创建后,可以对其进行各种操作,如调用对象的方法、访问对象的属性等。例如
a + 2
,这里就使用了a
这个对象。 - 销毁阶段:当对象不再被使用时,Python会回收其占用的内存空间,以便重新利用。
垃圾回收机制的作用
垃圾回收机制主要负责在对象的销毁阶段,自动识别并回收那些不再被使用的对象所占用的内存空间。它可以防止内存泄漏,确保程序在长时间运行过程中,不会因为持续创建对象而耗尽内存。
引用计数在Python垃圾回收中的原理
- 基本原理:Python中每个对象都有一个引用计数,记录了指向该对象的引用(变量)的数量。当对象被创建时,引用计数为1。例如
a = 1
,对象1
的引用计数为1。 - 引用计数变化:当有新的引用指向该对象时,引用计数加1。比如
b = a
,此时对象1
的引用计数变为2。当一个引用离开其作用域或者被显式赋值为None
时,引用计数减1。例如b = None
,对象1
的引用计数变回1。 - 垃圾回收触发:当对象的引用计数变为0时,Python垃圾回收机制会立即回收该对象所占用的内存空间。引用计数这种方式简单高效,能及时回收不再使用的对象,但它无法解决循环引用的问题。例如两个对象相互引用,它们的引用计数都不会为0,此时就需要Python的标记 - 清除和分代回收机制来处理这种情况。