Studies/윤성우의 열혈 파이썬 중급편
Story 01. 레퍼런스 카운트와 가비지 컬렉션
초얀
2022. 7. 27. 22:53
이전 글 >> <윤성우의 열혈 파이썬 중급편(2019)>
다음 글 >> Story 02. 수정 가능한 객체와 수정 불가능한 객체
가비지 컬렉션
>>> s = 'Garbage Collection'
이 코드에 대한 표현은,
- 변수 s가 문자열 'Garbage Collection'을 참조한다
- 변수 s가 문자열 'Garbage Collection'을 레퍼런스한다
레퍼런스 카운트가 0이 되면 객체는 메모리에서 없어진다.
바로 없어지는 것은 아니고 시스템에 시간적인 여유가 생길 때 소멸시킨다.
파이썬 인터프리터
우리가 파이썬 코드를(스크립트를) 작성하고 실행하면 이 코드는 먼저 '바이트 코드'라는 것으로 변환되어 저장된다.
이 바이트 코드는 '파이썬 가상 머신(Python Virtual Machine)' 위에서 실행된다.
즉 실제 파이썬 프러그램의 실행 주체는 PVM이라 할 수 있으며 PVM에 의해 가비지 컬렉션도 진행된다.
여기서 파이썬 코드 변환기와 가상 머신, 그리고 기본적으로 포함되는 각종 라이브러리들을 묶어서 '파이썬 인터프리터'라 한다.
파이썬 인터프리터는 그 종류가 다양한데 기본적으로 PVM의 구현 방식에 따라 나뉜다.
- CPython
- PVM이 C언어로 구현되어 있는 가장 일반적이고 널리 사용되는 인터프리터
- Jython
- PVM이 자바로 구현되어 있어서 자바에 대한 접근성이 좋은 인터프리터
- IronPython
- 마이크로소프트 사의 닷넷 기반으로 만들어지고 또 그 위에서 동작하는 인터프리터