【问题标题】:Debug memory consumption\leaks of already running script调试内存消耗\已经运行脚本的泄漏
【发布时间】:2014-02-09 19:27:16
【问题描述】:

我有一个 Python 程序开始占用大量 RAM。问题是它已经运行了大约 2 天,没有任何问题,但突然开始消耗大量 RAM。脚本很大,很难理解那里发生了什么。

有什么方法可以附加到正在运行的进程并转储有关对象的一些信息?这样我就能理解那里发生了什么。

我为此使用了一些 python 模块,它向我报告了一些类似的数据:

Strings: 4567, total memory: 45MB
Lists: 32, total memory: 12MB
Dicts: 1, total memory: 1MB
...

当然,这只是一个想法 - 任何与内存相关的报告都值得赞赏。

我找到了调试正在运行的进程的唯一可行的解​​决方案:gdb。但我一点也不熟悉。

请注意,我不想更改代码、导入 pdb、重新启动脚本等 - 否则我必须再等 2 天。

谢谢!

【问题讨论】:

标签: python debugging python-2.7 memory-leaks gdb


【解决方案1】:

在基于 glibc 的系统上,您可以使用 gdb-heap 扩展来检查正在运行的进程的堆。 gdb-heap 也了解 Python 如何进行内存管理。见:https://fedorahosted.org/gdb-heap/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-23
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2021-12-25
    • 2018-06-21
    • 2014-03-24
    • 2010-12-01
    相关资源
    最近更新 更多