我最近正在尝试研究Python的垃圾收集,我找到了this question。
所以首先让我检查一下我的理解是否正确:所以通常,当引用计数为0时,未包含在循环引用中的对象将被垃圾收集 - 并且它们应该在某个时间点达到0。因此,在调用gc之前,循环引用中的对象将不会被释放,因为它们的引用计数大于0.当gc运行时,gc可以检测并释放循环引用。但是如果循环引用中的对象具有__del__
方法,那么gc不知道该怎么做。因此,prorgrammer的任务是通过gc.garbage
手动处理这些对象。
所以在这里,“手动处理”是否意味着我应该手动打破循环引用? (我的意思是明确呼叫del obj
不应该工作)?还是有更好的方法?