import gc
for i in range(10):
gc.collect()
if True:
all_objects = gc.get_objects()
print "Number of objects =", len(all_objects)
else:
print "Number of objects =", len(gc.get_objects())
使用True块时,每次迭代(第一次迭代除外)的对象数都会增加1。如果使用False块,则不会。 get_objects函数调用的结果有一个引用(由all_objects引用),但是在下一次迭代中,all_objects绑定到一个新结果。到那时,我看不到谁仍在引用第一个结果,因此我不清楚为什么对象数量持续攀升。如果是gc本身持有引用,那么我看不到gc调试内存泄漏(如果它本身引起内存泄漏)有什么用。