我有一个负载的Twisted服务器.当服务器负载不足时,内存使用量会增加,并且永远不会回收(即使没有更多客户端).下次进入高负载时,内存使用量再次增加.这是当时情况的快照:
泄漏检查=完全启用的Valgrind没有显示任何重大泄漏(只有几个MB"最终丢失") - 因此C扩展不是罪魁祸首.总内存也不会与顶部显示的400MB +相加:
==23072== HEAP SUMMARY:
==23072== in use at exit: 65,650,760 bytes in 463,153 blocks
==23072== total heap usage: 124,269,475 allocs, 123,806,322 frees, 32,660,215,602 bytes allocated
我能找到的唯一解释是垃圾收集器不会跟踪某些对象,因此它们不会被objgraph和pympler显示,而是使用大量的RAM.
我还有哪些其他工具或解决方案?通过使用sys.getobjects,在调试模式下编译Python解释器会有帮助吗?
python garbage-collection memory-leaks memory-management twisted