我有一个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应用程序)
答案 0 :(得分:1)
要获取更有意义的数据,请让服务器保持运行数天,然后每天提取一次此摘要。关键是要看看哪一种物体从一天到下一天都在积累;那些对象类型将是你内存泄漏的最可能的候选者!让我们知道你找到了什么。