Python中的手动垃圾收集

Cas*_*ash 17 python garbage-collection

有没有办法手动删除垃圾收集拒绝摆脱的对象,即使我打电话gc.collect()?在Python 3.0中工作

Ale*_*lli 24

根据文档,gc.get_referrers(thatobject)将告诉你为什么对象仍然存活(在gc.collect()确保不受欢迎的" 活力"持续存在之后立即执行).在那之后,它是某种黑色艺术;-).你会经常发现一些引用者是列表(所以为什么这个列表指的是thatobject?你可以.remove在紧急模式下使用它,但是使正常的代码声音更好......),甚至更常见的是dicts(其中许多人可能是__dict__某些班级实例或其他人 - 往往不容易找出哪一个......再次,蛮力拆除有时是一种权宜之计的紧急解决方案,但绝不是可持续的远程解决方案! - ).


Tzu*_*hay 5

del或者None是你唯一的朋友

>>> a = "Hello"
>>> a = None
Or
>>> del a
Run Code Online (Sandbox Code Playgroud)

  • `del a` 不会删除对象(只是一个注释;并不暗示你暗示了这一点) (6认同)
  • 不一定是真的。该对象只需要不可访问(或具有令人满意的一次性引用计数,希望与前者一致)才有资格进行回收。 (2认同)