#三种垃圾回收方式:引用计数机制(为主)、标记-清楚、分代收集(为辅)
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()) #阈值
运行结果