我想在下面由self.x
表示的类中回收实例变量的内存。
我应该使用命令del self.x
;还是self.x=None
?他们有什么区别?假定将命令放入类的__del__
或__exit___
函数中。
首先要了解的是,del self.x
和self.x = None
都不会释放很多内存。它们两者的作用都是将self.x
引用的对象的引用计数器减一。然后,如果该对象的计数器在运行垃圾收集器时已达到0,则将释放内存]
由于两者之间的差异,您将无法读取值self.x
,因为del self.x
将从实例字典中删除x
。 self.x = None
只是将self.x
对象重新分配为无。