2011-03-07 4 views
2

나는 파이썬 클라이언트 - 서버 응용 프로그램을 가지고 있으며 그 서버는 약 4 일 동안 실행되었다 ... (/ proc/PID/status -> VmSize에 의해보고 된) 메모리 사용량은 약 660Mb로 증가했다.오브젝트 번호 해석 : 메모리 누출?

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 

내가 거기 특히 "냄새 나는"아무것도 표시되지 않는, 내가 놓친 거지 뭔가를 : 메모리 누수가있을 수 있다면, 그래서 (처음 20 개체 유형) 메모리 사용을 인쇄하는 objgraph를 사용? 파이썬 doesn't이 사용하지 않는 메모리를 OS에 즉시 출시했기 때문일 수 있습니다.
(이것은 CherryPy + SQLAlchemy 응용 프로그램입니다.)

+0

며칠 후에 특정 개체 카테고리가 일상적으로 메모리 사용량이 증가하고 있음을 알았습니까? 아니면 전부입니까? :) –

+0

그래서 뭘 찾았 니? –

답변

1

보다 의미있는 데이터를 얻으려면 며칠 동안 서버를 계속 실행하고이 요약을 하루에 한 번 가져옵니다. 핵심은 언젠가는 어떤 종류의 물체가 축적되고 있는지를 보는 것입니다. 이러한 객체 유형은 메모리 누수에 가장 적합한 후보가 될 것입니다! 당신이 찾은 것을 알려주십시오.

+0

감사합니다. – Joril

+1

'objgraph.show_growth'는 구체적으로 그렇게합니다. – Perkins