레퍼런스 카운트와 가비지 컬렉션

김건우·2021년 12월 7일
0

파이썬

목록 보기
1/18
post-thumbnail

가비지 컬렉션

: 소멸 대상으로 등록 해 두고, 시스템에 시간적인 여유가 생길때 소멸시키는 소멸 규칙 및 과정

파이썬은 자동으로 메모리가 소모된다. (일부 언어의 경우 명령어를 통해 메모리를 소모해야한다.)

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의 종류는 PVM의 구현 방식에 따라 나뉜다.
    • CPython : C언어로 구현되어 있는 가장 일반적이고 널리 사용되는 인터프리터 ( 중심이 되는 인터프리터 )
    • Jython : Java로 구현되어 있어서 자바에 대한 접근성이 좋은 인터프리터
    • IronPython : MS사의 닷넷 기반으로 만들어지고, 또 그 위에서 동작하는 인터프리터

파이썬 실행구조

파이썬 소스 코드 ➡️ 바이트 코드 (PVM, Python Virtual Machine)

즉, 파이썬 프로그램의 실행 주체는 파이썬 가상 머신이며, PVM에 의해 가비지 컬렉션도 진행이 된다.

profile
공부하는 개발자가 목표입니다.

0개의 댓글