2013-04-13 5 views
1

현재 Python 프로그램 (CPython 2.7이 설치된 Windows)의 메모리 사용량을 디버깅하려고합니다. 하지만 불행히도 현재 사용중인 메모리 양을 안정적으로 측정 할 수있는 방법을 찾을 수조차 없습니다.Python의 실제 메모리 사용량을 확인하십시오.

저는 작업 관리자/리소스 모니터를 사용하여 프로세스 메모리를 측정했지만 최대 메모리 사용량을 결정할 때만 유용합니다. 종종 파이썬은 관련 객체가 가비지 수집 된 후에도 커밋이나 작업 세트를 줄이지 않습니다.

파이썬이 실제로 사용하고있는 메모리 양을 알아 내거나 사용하지 않아서 사용하지 않는 메모리를 비울 수있는 방법이 있습니까? 나는 인터 퍼터를 다시 컴파일 할 필요가있는 것을 사용하지 않기를 바란다.

가 사용되지 않는 메모리를 해제하지 않는 증명 행동의 예 :

(after some calculations) # 290k 
gc.collect()    # still 290k 
x = range(9999999)   # 444k 
del x      # 405k 
gc.collect()    # 40k 
+1

OS에 메모리를 다시주지 않으면 할당 자의 표준이됩니다. 이론적으로 OS에 메모리를주기 위해 음의 값을 가진'sbrk'를 사용할 수는 있지만, 처음에는 그것을 가지고있는 것과 반대 순서로 메모리를 되돌려 주면 작동합니다. 이것은 보통 비현실적입니다 . – Voo

+0

당신이 보여준 코드가 어떻게 보이는지 모르겠다. * 파이썬은 사용하지 않은 메모리를 비우지 않는다. –

+2

파이썬에 신경 쓰지 마라. 행운을 빌며 * 모든 * 최신 OS의 * 모든 언어로 작성된 * 프로그램에서 의미있는 * 숫자를 얻을 수 있습니다. –

답변

6

파이썬이 실제로 사용하는 메모리 용량을 확인 할 수있는 방법이 있습니까,

하지 않음 with-in Python에서.

sys.getsizeof을 사용하여 객체 당 메모리 사용량에 대한 대략적인 아이디어를 얻을 수 있지만 총 메모리 사용량, 전체 할당량, 조각화, 사용되지 않은 메모리는 있지만 OS로는 반환되지 않습니다.

메모리 분석을 도울 수있는 Pympler이라는 타사 도구가 있습니다. 또한 객체 및 힙 메모리 사이징, 프로파일 링 및 분석을위한 Guppy이라는 프로그래밍 환경이 있습니다. 그리고 파이썬 코드 용 메모리 사용량 프로파일 러가있는 PySizer이라는 비슷한 프로젝트가 있습니다.

또는 사용하지 않은 메모리를 확보하려면 실패 했습니까?

강제로 메모리를 해제 할 수있는 공개 API가 없습니다.

+0

글쎄, 그게 내가 바라는 대답이 아니지만, 나는 운이 나빴던 것 같아. – Antimony