解释 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 数字:内存泄漏?的主要内容,如果未能解决你的问题,请参考以下文章