Python 垃圾回收机制

# 就像我们生活中会产生垃圾一样,程序在运行过程当中也会产生垃圾
# 程序运行过程中产生的垃圾会影响到程序的运行的运行性能,所以这些垃圾必须被及时清理
# 没用的东西就是垃圾
# 在程序中没有被引用的对象就是垃圾,这种垃圾对象过多以后会影响到程序的运行的性能
#   所以我们必须进行及时的垃圾回收,所谓的垃圾回收就是讲垃圾对象从内存中删除
# 在Python中有自动的垃圾回收机制,它会自动将这些没有被引用的对象删除,
#   所以我们不用手动处理垃圾回收
#   
'''Python 采用自动引用计数(ARC)方式来回收对象所占用的空间,
当程序中有一个变量引用该 Python 对象时,
Python 会自动保证该对象引用计数为 1;当程序中有两个变量引用该 Python 对象时,
Python 会自动保证该对象引用计数为 2,依此类推,如果一个对象的引用计数变成了 0,
则说明程序中不再有变量引用该对象,表明程序不再需要该对象,因此 Python 就会回收该对象。'''

''' 当一个对象被垃圾回收时,Python 就会自动调用该对象的 __del__ 方法。
需要说明的是,不要以为对一个变量执行 del 操作,该变量所引用的对象就会被回收,
只有当对象的引用计数变成 0 时,该对象才会被回收。
因此,如果一个对象有多个变量引用它,那么 del 其中一个变量是不会回收该对象的。'''
class A:
    def __init__(self):
        self.name = 'A类'

    # del是一个特殊方法,它会在对象被垃圾回收前调用
    def __del__(self):
        print('A()对象被删除了~~~',self)

a = A()
b = a # 又使用一个变量b,来引用a对应的对象

print(a.name)

# a = None # 将a设置为了None,此时没有任何的变量对A()对象进行引用,它就是变成了垃圾
# b = None
# del a
# del b
# input('回车键退出...')
原文地址:https://www.cnblogs.com/jzxs/p/11413975.html