码迷,mamicode.com
首页 > 其他好文 > 详细

垃圾回收机制例子

时间:2018-08-14 15:42:20      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:属性   int   disable   机器   回收   回收机制   运行机制   ini   self   

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是否开启;
‘‘‘

垃圾回收机制例子

标签:属性   int   disable   机器   回收   回收机制   运行机制   ini   self   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!