可能重复:
Python memory profiler
我有一个相当复杂的(约20,000)行Python程序,经过一些开发后,它在运行时开始消耗越来越多的内存。找出所有内存使用的最佳工具和技术是什么?
通常这归结为意外地保持对对象的引用或扩展模块错误(这不是特别可能,因为我们已经使用Python 2.4安装一段时间了。)
我们正在使用各种第三方库,如Twisted,Twisted Conch和MySQLdb。
答案 0 :(得分:15)
通常,无法关闭游标是最常见的内存泄漏之一。垃圾收集器无法看到游标中涉及的MySQL资源。除非明确调用close()
方法,否则MySQL不知道Python方面已发布。
答案 1 :(得分:1)
Python的内存由垃圾收集器管理。一般来说,内存泄漏应该没有问题(绝对不是Python2.5及更高版本),除非您碰巧在C / C ++中编写扩展模块。在这种情况下,Valgrind(博客文章 - http://bruynooghe.blogspot.com/2008/12/finding-memory-leaks-in-python.html)可能会有所帮助。我发现这个人 - http://mg.pov.lt/blog/hunting-python-memleaks使用了PDB和matplotlib来追踪内存泄漏。我希望这有帮助,我没有修复Python内存泄漏的经验。