[Python] 02. 파이썬에서 가비지컬렉션(GC)을 수행하는 방법에대해 알아본다.

파이썬에서 가비지컬렉션(GC)을 수행하는 방법에대해 알아본다.

Python에서 Garbage Collection을 하는 방법?

  • Reference Counting

모든 객체는 참조될때마다 카운팅을 하고 참조를 해제하면 카운팅된 숫자를 줄인다. 이런식으로 카운팅하다가 0이될때 메모리에서 삭제하는 방법을 reference counting 이라고 한다.

  • Reference Counting의 단점

객체가 참조될때 일반적인 경우와 다르게 순환 참조가 일어나는 경우가 있다. 자기 자신을 참조하거나 서로 참조하는 경우 참조를 해제해도 카운팅된 숫자가 0이될 수 없다.

예를 들어,

A 인스턴스 참조 +1

자기 자신 참조 +1

참조 해제 -1

이 경우 reference counting은 1이다.

  • Generational Garbage Collection

세대와 각 세대의 임계값을 기준으로 Garbage Collection이 이루어진다. 세대는 0~2로 이루어 졌다. 새로 참조된 객체는 0세대로 배정된다.

이때 객체가 카운팅된 값(참조된 횟수 - 해제된 횟수)이 세대에 지정된 임계값보다 커질경우 가비지 컬렉션이 이루어지게된다.

가비지 컬렉션은 오래된 세대부터 이루어 지게되는데 각 세대마다 정해진 임계값을 기준으로 이루어진다. 그 후 객체들은 다음 세대로 넘어가게된다.


© 2020. All rights reserved.