场景:
我有一个连续运行的 python 进程(直到我们手动停止 - 无限)并通过每 1 分钟读取某些系统文件来收集数据。当它启动时,它占用大约 25 MB。但是每天占用的内存量都在增加,15天后,已经超过500MB。
- 我是 python 新手,因此无法通过手动检查代码/使用调试器来找出问题,
- 我不知道有什么工具可以轻松发现问题,请推荐一些可以帮助我发现问题的工具或方法。
- 我认为这可能是内存泄漏问题或变量一次又一次地向其附加数据,而根本没有释放它...请指出某些可以帮助我理解此类问题的引用资料在 python 中。
希望细节足够清楚,更多细节让我知道,我可以澄清。
更新
我试图关注这个话题 Showing the stack trace from a running Python application , 但我面临以下无法完全解决的错误。
- 当前上下文中没有符号“PyEval_EvalFrameEx”。
- 当前上下文中没有符号“PyStringObject”。
我搜索找到了这样一个方法, Hook 到已经运行的进程并获取堆栈/内存信息。但还没有运气,请帮助我。
最佳答案
使用Dowser帮助跟踪内存泄漏。它使用 CherryPy 作为 Web 服务器,即使您没有开发 Web 应用程序,它也可以从您的浏览器向您提供内存分配 View 。
另见 this post ,您可能会感兴趣。使用 Dowser,您应该能够看到进程内存中有哪些意外对象。
关于python进程每天都在增加内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5069494/