2

我有一个 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没有立即向操作系统释放未使用的内存?
(这是一个 CherryPy+SQLAlchemy 应用程序)

4

1 回答 1

1

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

于 2011-05-12T03:22:36.423 回答