我正在尝试这种方法来删除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()
在最后一步,我将从内存中删除对象引用 正在使用上述程序将从内存中删除对象
如果没有那么代码有什么问题以及如何纠正它
答案 0 :(得分:2)
您还需要执行del d
,因为d
也持有对同一对象的引用。调用del
只会减少引用计数并从使用中删除特定引用,但在引用计数达到0
之前,实际的内存对象不会被垃圾回收。
答案 1 :(得分:0)
我不知道写作是什么意思:
如果没有那么代码有什么问题以及如何纠正它
使用del
语句时,删除对象的引用。它会耗尽内存,直到调用垃圾收集器。请记住,这可能是一个耗时的过程,如果进程有足够的内存来继续执行,则不需要这样做。
一般来说,Python不执行C ++ - 就像析构函数bahaviour。
“专家Python编程”的引用:
这种内存管理器的方法大致基于一个简单的方法 声明:如果不再引用给定对象,则将其删除。 换句话说,函数中的所有本地引用都将被删除 口译员:
•离开功能
•确保不再使用该物体。
在正常情况下,收藏家会做一个 不错的工作。但del调用可以用来帮助垃圾收集器 手动删除对象的引用。
所以你不要手工管理记忆。你可以帮助垃圾收集器,但最好在幕后留下记忆管理。