2011-03-07 70 views
2

我有一個Python客戶端 - 服務器應用程序,它的服務器已經運行了大約4天......它的內存使用情況(如/ proc/PID/status-> VmSize所報告的)已增長到約660Mb,我想知道如果有可能是內存泄漏,所以我用objgraph打印出它的內存使用情況(第20對象類型):解釋objgraph數字:內存泄漏?

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

經過幾天的觀察,你是否注意到,每天都有哪些特定的對象類別在內存使用中逐漸增加?還是全部是? :) – 2011-05-17 12:14:52

+0

那麼你發現了什麼? – 2012-08-18 17:13:36

回答

1

要獲取更有意義的數據,請讓服務器運行數天,然後每天抽取一次該摘要。關鍵是要看看哪種物體從一天到下一天積累起來;這些對象類型將成爲您內存泄漏的最可能候選對象!讓我們知道你發現了什麼。

+0

我會盡力,謝謝:) – Joril 2011-05-12 06:46:48

+1

'objgraph.show_growth'具體做到這一點。 – Perkins 2016-11-02 05:12:53