我正在尝试使用这种方法删除python中的对象。我阅读了Python的文档,声明垃圾收集器将自动删除未引用的对象。
def check():
class newOb():
def __init__(self,value):
self.value = value
print self.value
return None
class ob:
ins = {}
def cr(self,someuniqueid,value) :
newV = newOb(value)
ob.ins[someuniqueid] = newV ## saving this object refernce to the ob class ins dictionary
return newV
#### Accessing Object ###
someuniqueid = 12
c = ob()
d = c.cr(someuniqueid,123)
print d.value ## will print 123
# now deleting the associated object
del c.ins[someuniqueid]
check()
在最后一步,我将从内存中删除对象引用 正在使用上述过程将从内存中删除对象
如果不是,那么代码有什么问题以及如何纠正它
您还需要执行
del d
,因为d
也持有对同一对象的引用。调用del
只会减少引用计数并从使用中移除特定引用,但在引用计数达到0
之前,不会对实际的内存中对象进行垃圾收集。我不知道你写什么意思:
使用
一般来说,Python不执行C++类析构函数Baavivor。del
语句时,删除对对象的引用。在调用所有垃圾收集器之前,它将耗尽内存。请记住,这可能是一个耗时的进程,如果该进程有足够的内存来继续执行,则不必这样做。引用“专家Python编程”:
所以你不能用手来管理记忆。你可以帮助垃圾收集器,但最好把内存管理留在幕后。
相关问题 更多 >
编程相关推荐