python进程每天都在增加内存使用量

标签 python performance memory memory-leaks

场景:

我有一个连续运行的 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/

相关文章:

Python 在不干扰脚本的情况下休眠?

python - OpenCV将像素列表从一个图像复制到另一个图像

c# - 分组连续相同的项目 : IEnumerable<T> to IEnumerable<IEnumerable<T>>

delphi - TClientDataSet 不释放内存

linux - 64 位 linux 上 32 位进程的地址空间

.net - .net 中最小的内存分配是一个字节是真的吗?

python - 如何使用 pandas 使用列与列列表和值列表之间的匹配来填充数据框?

javascript - JavaScript中字典的使用查询

php - 创建论坛软件 - 寻找解决 1 件事的最佳方式

java - Hibernate:如何获取可选的外键数据?