python面向对象-引用和垃圾回收

引用

class Phone:
    def __init__(self):
        print("init方法")
        self.name = ""
        self.price = 0
        self.cpu = ""

创建对象:

huawei = Phone()

此处:huawei 就是 引用

占用内存

垃圾回收

在Python内部记录着所有使用中的对象有多少引用,当这个对象的 引用计数变为 0 时,说明没有使用该对象,就被垃圾回收

huawei = Phone()       # 创建对象
b = huawei             # 增加引用的计数
del huawei             # 减少引用的计数
b = 100                # 减少引用的计数

例子

无限创建对象,观察内存的变化:

class Phone:
    def __init__(self):
        print("init方法")
        self.name = ""
        self.price = 0
        self.cpu = ""

while True:
    huawei = Phone()

通过任务管理器,发现内存增加的很慢

不是立即回收

由解释器在适当的时机,将垃圾对象占用的内存空间回收

所以在上面代码中,内存占用会越来越多,即:创建对象的速度,比垃圾回收的速度快


原文出处:https://malaoshi.top/show_1IX5StSVHpIx.html