【发布时间】: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 天。
谢谢!
【问题讨论】:
-
您可以使用
-p附加到进程。您甚至可以使用ltrace/strace仅获取内存分配。例如,请参阅 techblog.rosedu.org/tags/debugging.html 中的帖子 -
@MihaiMaruseac 谢谢
标签: python debugging python-2.7 memory-leaks gdb