zoukankan      html  css  js  c++  java
  • 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('回车键退出...')
  • 相关阅读:
    ‘Host’ is not allowed to connect to this mysql server
    centos7安装mysql
    further configuration avilable 不见了
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    hadoop启动 datanode的live node为0
    ssh远程访问失败 Centos7
    Linux 下的各种环境安装
    Centos7 安装 python2.7
    安装scala
    Centos7 安装 jdk 1.8
  • 原文地址:https://www.cnblogs.com/jzxs/p/11413975.html
Copyright © 2011-2022 走看看