Интерпретация чисел objgraph: утечка памяти? - PullRequest
2 голосов
/ 07 марта 2011

У меня есть клиент-серверное приложение Python, и его сервер работает около 4 дней ... Его использование памяти (как сообщает / proc / PID / status -> VmSize) выросло до 660 МБ, и я был Интересно, может ли быть утечка памяти, поэтому я использовал 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)

1 Ответ

1 голос
/ 12 мая 2011

Чтобы получить более значимые данные, оставьте сервер включенным на несколько дней и проверяйте эту сводку один раз в день.Ключ будет видеть, какие виды объектов накапливаются от одного дня к следующему;эти типы объектов будут наиболее вероятными кандидатами на утечку памяти!Дайте нам знать, что вы найдете.

...