우리는 다음과 같은 상황에서 변수 s에 문자열이 저장되었다고 표현한다.
s = 'Garbage Collection'
그러나 사실은 문자열 객체에 s라는 이름이 붙은 상황이다. 즉 파이썬의 변수는 빈 상자가 아닌 떼었다가 붙였다 할 수 있는 포스트잇의 개념이다. 보통은 '변수에 문자열을 저장했다' 또는 '변수에 객체를 저장했다' 라는 식의 표현이 사용되고 또 그것이 더 자연스럽다. 하지만 지금 설명하는 파이썬의 가비지 컬렉션 메커니즘을 이애하려면 변수를 포스트잇으로 이해해야한다.
참조
한다.레퍼런스
한다.>>> r1 = [1,2,3,4]
>>> r2 = r1
>>> r2
[1, 2, 3, 4]
>>> r1 = 'simple'
>>> r2
[1, 2, 3, 4]
>>> r2 = 'happy'
>>> r2
'happy'
소멸 대상
객체를 아무도 참조하지 않은 상황
일련의 소멸 규칙 및 과정을 가리켜 가비지 컬렉션이라고 한다.
레퍼런스 카운트
레퍼런스 카운트가 0이 되면 소멸 대상으로 등록된다.
우리가 파이썬 코드를 작성하고 실행하면 이 코드는 먼저 바이트 코드라는 것으로 변환되어 어딘가에 저장된다. 그리고는 이 바이트 코드는 파이썬 가상 머신 위에서 실행이 된다. 비록 이러한 일련의 과정이 감춰져 있어서 우리 눈에 보이지는 않는다.
하드웨어 > 운영체제 > Python Virtual Machine → 파이썬 소스 코드 ——> 바이트 코드로 변환
즉 실제 파이썬 프로그램의 실행 주체는 파이썬 가상 머신, 줄여서 PVM이라 할 수 있으며 PVM에 의해 가비지 컬렉션도 진행이 된다. 그리고 지금 설명한 파이썬 코드 변환기와 가상 머신, 그리고 기본적으로 포함되는 각종 라이브러리를 묶어서 파이썬 인터프리터
라고 한다.
PVM 구현 방식에 따라 나뉨