场景:
我有一个python进程,它连续运行(直到我们手动无限停止),每1分钟读取某些系统文件来收集数据。当它启动时,它占用大约25MB。但是,内存占用量与日俱增,15天后,它就超过了500MB。在
希望细节足够清楚,更多细节让我知道,我可以澄清。在
更新
我试图遵循这条线索Showing the stack trace from a running Python application,但我面临以下错误,这些错误无法完全解决。在
我试图找到这样一种方法,即钩住已经运行的进程并获取堆栈/内存信息。但还没有运气,请帮帮我。在
使用Dowser帮助跟踪内存泄漏。它使用CherryPy作为一个web服务器,即使您没有开发web应用程序,它也可以从浏览器向您提供内存分配的视图。在
另请参阅this post,您可能会感兴趣。使用Dowser,您应该能够看到进程内存中有哪些意外的对象。在
一般来说:Python在内存管理方面存在问题,尤其是在释放内存方面。 经常重启应用程序。另外,学习如何使用垃圾回收器'gc'并检查类似的线程
How do I profile memory usage in Python?
这是长期运行的python进程所表现出的一个众所周知的问题。改进了一些,但还没有完全解决问题。例如,Python使用自己的内存管理算法,这可能导致自己的堆碎片化。最好的策略是运行多个进程,并在每个进程达到高内存水印时优雅地重新启动。Apache也使用这个策略。在
相关问题 更多 >
编程相关推荐