본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 01. reference count와 garbage collection

출처 : 윤성우의 열혈 파이썬 : 중급

01. reference count와 garbage collection

변수 s가 문자열 'Garbage Collection'를 참조한다

s = 'Garbage Collection'

리스트는 소멸 대상이 된다

r = [1,2,3]
r = 'simple'    # 변수 r이 참조 대상을 문자열로 바꿈

r1 = [1,2,3,4]  # 리스트의 rf = 1
r2 = r1         # 리스트의 rf = 2
r1 = 'simple'   # 리스트의 rf = 1
r2 = 'happy'    # 리스트의 rf = 0 -> gc 대상이 됨
  • reference count : 객체를 참조하는 변수의 수
  • reference count가 0이 되었다는 것은 소멸 대상으로 등록이 되어서 조만간 소멸된다는 뜻이다
  • 파이썬 코드(스크립트)를 작성하고 실행하면 이 코드는 먼저 '바이트 코드'로 변환되어 어딘가에 저장된다
  • 바이트 코드는 '파이썬 가상머신(Python Virtual Machine)' 위에서 실행이 된다
  • 즉 실제 파이썬 프로그램의 실행 주체는 파이썬 가상머신(PVM)이다
  • PVM에 의해 garbage collection도 진행이 된다
  • 파이썬 코드 변환기와 가상머신, 기본적으로 제공되는 각종 라이브러리들을 묶어서 '파이썬 인터프리터'라고 한다
  • PVM의 구현 방식에 따라 CPython(C), Jython(java), IronPython(MS .net)으로 나뉜다
  • 중심은 CPython