解释 objgraph 数字:内存泄漏?

Posted

技术标签:

【中文标题】解释 objgraph 数字:内存泄漏?【英文标题】:Interpreting objgraph numbers: memory leak? 【发布时间】:2011-03-07 17:36:45 【问题描述】:

我有一个 Python 客户端-服务器应用程序,它的服务器已经运行了大约 4 天...它的内存使用量(由 /proc/PID/status -> VmSize 报告)已经增长到大约 660Mb,我是想知道是否可能存在内存泄漏,所以我使用objgraph 打印出它的内存使用情况(前 20 个对象类型):

58524    tuple
33270    dict
15483    function
9976     list
5396     set
2644     weakref
2489     builtin_function_or_method
2482     instancemethod
1898     OrderedSet
1751     _BindParamClause
1680     _generated_label
1485     Comparator
1398     type
1315     InstrumentedAttribute
1267     CustomColumn
1165     cell
1146     ScalarAttributeImpl
1146     ColumnProperty
1146     ColumnLoader
1075     wrapper_descriptor

我没有看到任何特别“臭”的东西,我错过了什么吗?也许这只是因为 Python doesn't 立即将未使用的内存释放到操作系统? (这是一个 CherryPy+SQLAlchemy 应用程序)

【问题讨论】:

经过几天的观察,您是否注意到任何特定对象类别的内存使用量每天都在增加?还是全部? :) 【参考方案1】:

要获取更有意义的数据,请让服务器运行几天,并每天提取一次此摘要。关键是看哪一种物体从一天到另一天在积累;这些对象类型最有可能成为您的内存泄漏的候选对象!让我们知道您发现了什么。

【讨论】:

以上是关于解释 objgraph 数字:内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章

请解释一下“内存泄漏”,这个问题会有啥影响

解释 DrMemory 日志,内存泄漏 [关闭]

基本的内存泄漏的解释

无法解释的内存泄漏 swift iOS

Python 3 解释器在嵌入时是不是会泄漏内存?

使用Debug Diagnostic Tool排除内存泄漏故障