首页 > 其他 > 详细

垃圾回收机制例子

时间:2018-08-14 15:37:59      阅读:137      评论:0      收藏:0      [点我收藏+]
import gc class ClassA(): def __init__(self): print(‘object born ,id:%s‘%str(hex(id(self)))) def f2(): while True: c1 = ClassA() c2 = ClassA() c1.t = c2 #给c1创建个属性c1.t 这个属性指向c2 c2.t = c1 #给c2创建个属性c2.t 这个属性指向c1 del c1 del c2 gc.disable() #关闭垃圾回收,机禁止内存回收 f2()

#这样运行的脚本内存没有得到回收,我们用的又是while循环,这样会不断的增加内存,直到把机器跑死
‘‘‘
解释一下这个脚本的运行机制:
1.首先创建一个类,这个不重要,什么都行
2.然后是创建两个对象c1和c2,分别指向了类ClassA,这就占用了两个内存
3.分别给这两个对象添加了个属性指向对方,这样的话指向内存的指针就不再只有c1和c2了,
4.删除c1,c2指向类ClassA内存的指针,
5.但是指向在c1,c2,内存内指向对方的属性t的指针还在,所以他们的内存不会被释放
6.while循环的时间长了,就有大量的内存没有得到释放而卡死.
‘‘‘
‘‘‘
gc module
gc.enable(),开启gc(默认情况下是开启的);
gc.disable(),关闭gc;
gc.isenabled(),判断gc是否开启;
‘‘‘

垃圾回收机制例子

原文:http://blog.51cto.com/853056088/2159742

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!