MST

星途 面试题库

面试题:Python中对象生命周期与垃圾回收基础

请简述Python对象生命周期的几个主要阶段,以及垃圾回收机制在其中的作用。另外,解释一下引用计数在Python垃圾回收中的原理。
22.3万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

Python对象生命周期主要阶段

  1. 创建阶段:当执行代码创建对象时,如a = 1,Python会在内存中为对象分配空间,并初始化其内部状态。
  2. 使用阶段:对象创建后,可以对其进行各种操作,如调用对象的方法、访问对象的属性等。例如a + 2,这里就使用了a这个对象。
  3. 销毁阶段:当对象不再被使用时,Python会回收其占用的内存空间,以便重新利用。

垃圾回收机制的作用

垃圾回收机制主要负责在对象的销毁阶段,自动识别并回收那些不再被使用的对象所占用的内存空间。它可以防止内存泄漏,确保程序在长时间运行过程中,不会因为持续创建对象而耗尽内存。

引用计数在Python垃圾回收中的原理

  1. 基本原理:Python中每个对象都有一个引用计数,记录了指向该对象的引用(变量)的数量。当对象被创建时,引用计数为1。例如a = 1,对象1的引用计数为1。
  2. 引用计数变化:当有新的引用指向该对象时,引用计数加1。比如b = a,此时对象1的引用计数变为2。当一个引用离开其作用域或者被显式赋值为None时,引用计数减1。例如b = None,对象1的引用计数变回1。
  3. 垃圾回收触发:当对象的引用计数变为0时,Python垃圾回收机制会立即回收该对象所占用的内存空间。引用计数这种方式简单高效,能及时回收不再使用的对象,但它无法解决循环引用的问题。例如两个对象相互引用,它们的引用计数都不会为0,此时就需要Python的标记 - 清除和分代回收机制来处理这种情况。