2014-04-16 5 views
2

파이썬에서 사전 메모리를 해제하는 데 문제가 있습니다. 나는 다음과 같은 검사를 실행하고 프로세스 메모리 사용 다음 :사전의 메모리를 해제하는 파이썬

a = dict() 
for i in xrange(1000000): 
    a[i] = i 
for i in xrange(1000000): 
    del a[i] 
gc.collect() 

그 라인을 실행 후 메모리 사용량이 이전보다 훨씬 더 높은입니다. 어떻게 모든 메모리를 해제 할 수 있습니까? notice dict 자체를 삭제하고 싶지 않습니다.

감사합니다.

+0

xrange (1000000) : for a 대신 'del a' 시도 : del a [i]' – emeth

+1

[강력한 사전] (http://pyvideo.org/video/276/the-mighty-dictionary)을 참조하십시오. -55) –

+0

관련 또는 중복, 확실하지 않음 : http://stackoverflow.com/questions/3935675/python-reclaiming-memory-after-deleting-items-in-a-dictionary – carlosdc

답변

0

사전에서 모든 요소를 ​​제거하면 사전을 메모리에서 제거하지 않습니다. 파이썬은 참조 계산 기술을 사용합니다. 따라서 객체의 참조 횟수가 0으로 떨어지면 가비지 수집 준비가 완료됩니다. 그래서, 당신의 가장 좋은 방법은 사전이 다른 참조, a에 의해 언급 된 사전 쓰레기가 자동으로 수집됩니다이없는 경우이

a = None 

처럼 실제 사전을 참조에서 a 참조를 제거하는 것입니다.

관련 문제