Python:垃圾回收--引用计数

#三种垃圾回收方式:引用计数机制(为主)、标记-清楚、分代收集(为辅)
import sys
import psutil
import os
import gc

def showMenSize(tag):
    pid=os.getpid()
    p=psutil.Process(pid)
    info=p.memory_full_info()
    memory=info.uss/1024/1024
    print('{} memory used:{} MB'.format(tag,memory))
    pass
def func():
    showMenSize('初始化')
    a=[i for i in range(10000000)]
    b=[i for i in range(10000000)]
    # a.append(b)
    # b.append(a)
    showMenSize('创建列表对象a b之后')
    # del a
    # del b
    pass

func()
gc.collect()    #手动释放
showMenSize('完成时候的')
# a=[]
# # print(sys.getrefcount(a))
# b=a
# print(sys.getrefcount(a))
#引用计数的优点:实时性,一旦没有引用,内存就直接释放了。不需要等待特定的时机。
#缺点:消耗资源、循环引用,内存无法得到释放

#触发垃圾回收:当gc模块的计数器大到阈值的时候,自动回收垃圾
#调用gc.collect(),手动回收垃圾
#程序退出来的时候,python解释器回收垃圾


print(gc.get_threshold())    #阈值

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值