184、循环引用与内存泄漏:gc 模块、weakref、del与资源泄漏的检测方法一个让我熬夜到凌晨三点的Bug去年接手一个老项目,跑着跑着内存就飙到2GB,然后OOM被系统kill掉。我盯着top命令里不断攀升的RES列,头皮发麻。排查了两天,最后发现是几个类之间互相引用了对方的实例,而且都实现了__del__方法——Python的垃圾回收器直接罢工了,这些对象永远无法被回收。这种问题在Web服务里尤其致命。你以为请求处理完了,内存就释放了?天真。如果每个请求都产生几个循环引用的对象,服务跑个几小时,内存就像漏水的桶,迟早见底。循环引用:Python GC的软肋Python的引用计数机制很高效,但有个致命缺陷——它处理不了循环引用。看这个经典案例:classA:def__init__(self