del x 和 x=None 回收内存的区别?
Difference between del x and x=None for reclaiming the memory?
我想回收下面 self.x
表示的 class 中实例变量的内存。
我应该使用命令del self.x
;或 self.x=None
?他们有什么区别?假设要将命令放入 class 的 __del__
或 __exit___
函数中。
首先要了解的是,del self.x
和 self.x = None
都不会释放任何内存。他们所做的都是将 self.x
引用的对象的引用计数器减一。然后如果这个对象的计数器已经达到 0 时垃圾收集器将 运行 然后内存将被释放
对于两者的区别,您将无法读取值self.x
,因为del self.x
将从实例字典中删除x
。 self.x = None
只是重新分配 self.x
对象 None.
我想回收下面 self.x
表示的 class 中实例变量的内存。
我应该使用命令del self.x
;或 self.x=None
?他们有什么区别?假设要将命令放入 class 的 __del__
或 __exit___
函数中。
首先要了解的是,del self.x
和 self.x = None
都不会释放任何内存。他们所做的都是将 self.x
引用的对象的引用计数器减一。然后如果这个对象的计数器已经达到 0 时垃圾收集器将 运行 然后内存将被释放
对于两者的区别,您将无法读取值self.x
,因为del self.x
将从实例字典中删除x
。 self.x = None
只是重新分配 self.x
对象 None.