파이썬 GC

less than 1 minute read

파이썬 GC

파이썬의 메모리 관리는 기본적으로 garbage collectionreference counting을 통해 관리된다.

대부분의 reference counting을 통해 객체 참조 횟수가 0이 되면 사용하지 않는 객체로 판단하고 할당을 해제하나 reference cycles(순환참조)가 발생한 경우에는 garbage collection을 사용한다.

Reference Counting

모든 객체는 참조 당할때 레퍼런스 카운트 증가, 참조가 없어 질때 카운트가 감소한다.

상세내용 파이썬 문서 확인

참조 횟수 증가조건

  1. 변수에 객체 할당
  2. list등의 시퀀스에 추가하거나, instance의 속성으로 추가되는등의 데이터 스트럭처에 객체가 추가되는 경우
  3. 객체를 함수의 인수로 전달할 때

객체의 참조 횟수 확인 sys.getrefcount()

Garbage Collection

순환참조

>>> a = Foo()
>>> b = Foo()
>>> a.x = b
>>> b.x = a
>>> del a
>>> del b 

generational hypothesis

img 두가지 가설

  • 대부분의 객체는 금방 도달할 수 없는 상태(unreachable)가 된다.
  • 오래된 객체(old)에서 젊은 객체(young)로의 참조는 아주 적게 존재한다.

generation, threshold

파이썬 가비지 컬렉터를 이해하기 위해선 두가지 용어의 정리가 필요하다.

https://winterj.me/python-gc/ https://weicomes.tistory.com/277 https://winterj.me/python-gc/ https://codeday.me/ko/qa/20190314/24692.html https://b.luavis.kr/python/dismissing-python-garbage-collection-at-instagram

Categories:

Updated: