gc.collect 是否为我删除的变量释放内存?
Does gc.collect release memory for variables that I've deleted?
如果我使用 del huge_object
然后使用 gc.collect()
它会释放被 huge_object
占用的内存吗
简短回答:这取决于...
长答案:这取决于 huge_object
是否是对实际对象的最后引用。如果是(例如,因为它是曾经存在的唯一引用),该对象将被标记为可垃圾回收,其内存将由 nect gc.collect()
回收。但事实并非如此:
huge_object = Huge_Class()
x = huge_object
del huge_object
gc.collect() # does not free memory for the huge object
只有引用被销毁,只要 x
存在,对象就会一直存在。
如果我使用 del huge_object
然后使用 gc.collect()
它会释放被 huge_object
简短回答:这取决于...
长答案:这取决于 huge_object
是否是对实际对象的最后引用。如果是(例如,因为它是曾经存在的唯一引用),该对象将被标记为可垃圾回收,其内存将由 nect gc.collect()
回收。但事实并非如此:
huge_object = Huge_Class()
x = huge_object
del huge_object
gc.collect() # does not free memory for the huge object
只有引用被销毁,只要 x
存在,对象就会一直存在。