2012-12-09 4 views
3

나는 끊임없이 객체를 할당하고 해제하는 장기 실행 프로세스가 있습니다. 객체가 해제 되더라도 RSS mem 사용은 시간이 지남에 따라 올라갑니다.파이썬에서 메모리 조각화 계산하기

얼마나 많은 조각화가 발생하는지 계산할 수 있습니까? 하나의 가능성은 RSS/sum_of_allocations을 계산하여이를 지표로 사용하는 것입니다. 그렇다면 어떻게해야 분모 (sum_of_allocations)를 계산할 수 있습니다.

+1

왜 메모리 조각화 문제라고 생각하십니까? [파이썬 메모리 프로파일 러] (http://stackoverflow.com/questions/110259/python-memory-profiler)를 시도하십시오. – jfs

+0

@ J.F.Sebastian 그 다음에 할 것입니다. 그러나 Python은 작은 메모리 덩어리를 할당/해제하는 수명이 긴 프로세스의 메모리를 조각내는 것으로 알려져 있습니다. – Ali

+0

@ J.F.Sebastian 그래서 프로파일 러를 사용하면 조각화가 발생했는지 여부를 어떻게 알 수 있습니까? 메모리 할당을 합산하고 RSS와 비교해보십시오. – Ali

답변

1

가비지 수집기 인터페이스 gc를 확인하십시오.

http://docs.python.org/2/library/gc.html

넌 물체 검사 할

는 일반적으로 gc.get_objects()

"으로 추적되고, 원자 유형의 인스턴스는 추적되지 않고, 비 원자 유형의 인스턴스 (용기 , 사용자 정의 개체 ...). "

해제 할 수는 없지만 도달 할 수없는 개체를 찾는 gc.garbage도 있습니다.