代码之家  ›  专栏  ›  技术社区  ›  Dickon Reed

如何在Python程序中找到内存泄漏?[副本]

  •  31
  • Dickon Reed  · 技术社区  · 15 年前


    Python memory profiler

    我有一个相当复杂(大约20000行)的Python程序,经过一些开发之后,它在运行时开始消耗越来越多的内存。找出所有内存的最佳工具和技术是什么?

    通常这可能是由于意外地保留了对对象的引用,或者是扩展模块错误(这不太可能,因为我们已经使用Python2.4安装了一段时间)。

    我们正在使用各种第三方库,如Twisted、Twisted Conch和MySQLdb。

    2 回复  |  直到 7 年前
        1
  •  17
  •   S.Lott    15 年前

    通常,无法关闭游标是最常见的内存泄漏类型之一。垃圾收集器看不到游标中涉及的MySQL资源。MySQL不知道Python端已经发布,除非 close() 方法被显式调用。

    经验法则。打开,使用 然后接近

        2
  •  1
  •   batbrat    15 年前

    Python的内存由垃圾收集器管理。一般来说,内存泄漏不应该有问题(当然不适用于Python 2.5和以上),除非你碰巧在C/C++中写扩展模块。在这种情况下,Valgrind(博客文章- http://bruynooghe.blogspot.com/2008/12/finding-memory-leaks-in-python.html )可能会有帮助。我发现这个人- http://mg.pov.lt/blog/hunting-python-memleaks