가비지 컬렉션
: 소멸 대상으로 등록 해 두고, 시스템에 시간적인 여유가 생길때 소멸시키는 소멸 규칙 및 과정
파이썬은 자동으로 메모리가 소모된다. (일부 언어의 경우 명령어를 통해 메모리를 소모해야한다.)
S = ‘Garbage Collection’
변수 S 에 문자열지 저장되어있다고 표현.
=문자열 객체에 s라는 이름이 붙은 상황
즉, 파이썬의 변수는 빈 상자가 아닌 떼었다 붙였다 할 수 있는 ‘포스트잇’의 개념이다.
관점에 대한 설명
프로그래밍 작성시
S 라는 상자(변수)안에 문자열 객체(“Garbage Collection”)가 담겨있는 상황.
문법적 공부 시 ( 메모리 관점에서 볼 때 )
“Garbage Collection”이라는 문자열 객체가 메모리 공간에 생성 되고, 해당 공간에 대해 S 라는 이름이 붙는다.
= 변수 s가 문자열 ‘Garbage Collection’ 을 ‘참조(레퍼런스)’ 한다.
예)
r = [1, 2, 3]
= 리스트 객체를 생성하고, r이라는 이름으로 참조하고 있는 상황.
레퍼런스 카운트
: 할당한 메모리가 언제 해제되는지
메모리 소멸시기는 “객체를 아무도 참조하지 않는 상황” 이다.
= r.c(레퍼런스 카운트)가 0이 될때 메모리가 소멸한다.
= 정확히는 소멸 대상이 된다. ( 바로 삭제되는 것이 아닌, 소멸 대상으로 등록만 해두고 시스템에 시간적인 여유가 생길 때 소멸된다. )
예)
r = [1, 2, 3]
r = ‘simple’ #변수 r이 참조 대상을 문자열로 바꿨다.r1 = [1, 2, 3] # 리스트 객체의 R.c = 1
r2 = r1 # 리스트의 R.c = 2 로 증가
r1 = ‘simple’ # 리스트의 R.c = 1 로 감소
r2 = ‘happy’ # 리스트의 R.C = 0 으로, 가비지 컬렉션 대상
파이썬 인터프리터
: 파이썬의 모든 프로그램을 파이썬 인터프리터라고 한다. (라이브러리, 입력창, 코드 변환기, 가상 머신 등등 파이썬에 관한 모든 것)
파이썬 실행구조
파이썬 소스 코드 ➡️ 바이트 코드 (PVM, Python Virtual Machine)
즉, 파이썬 프로그램의 실행 주체는 파이썬 가상 머신이며, PVM에 의해 가비지 컬렉션도 진행이 된다.