파이썬 중급 바인딩, 레퍼런스 카운트와 Garbage Collection

황태영·2024년 7월 10일

파이썬 중급

목록 보기
1/2

바인딩(=)

파이썬에서 변수를 처음 배울때는

a = 3

이라고 주어진다면 3을 a에 할당 한다라고 배웠다
이것을 엘레강스하게 말하자면,

3이라는 str타입의 객체를 메모리에 할당하고 할당된 메모리 객체의 주소를 a라는 변수에 바인딩한다

라고 말해야 이제 좀 개발자 다운 말을 하는거다

여기에서 바인딩은 a 라는 변수가 할당된 메모리 객체의 주소를 가리키는 것을 말한다 "=" 표시라고 보면 된다

레퍼런스 카운트

레퍼런스 카운트는 변수가 어떤 객체를 바인딩 하면 레퍼런스 카운트 값이 증가한다

a = 3
import sys
sys.getrefcount(a) #42 - 1증가함

3이라는 객체를 a라는 변수가 바인딩하여 객체인 3의 레퍼런스 카운트 값이 증가한 것이다

숫자가 너무 큰 것은 파이썬에서 기본적으로 3이라는 객체를 41번 사용중이다 라는 뜻이라고 보면된다

b = 3 #1증가
c = 3 #1증가
sys.getrefcount(3) #44

3객체의 레퍼런스 카운트 값이 2가 증가한 것을 볼 수 있다

Garbage Collection

레퍼런스 카운트 값이 0이 되면 파이썬 인터프리터에서는 해당 객체에 대한 메모리 할당을 해제하게 된다

이게 Garbage Collection의 기본 메커니즘이다

0개의 댓글