IT 그리고 정보보안/Knowledge base
파이썬 객체 주소 식별과 레퍼런스 카운트
plummmm
2021. 4. 13. 07:39
반응형
객체의 주소를 식별할 때 id라는 내장 함수를 사용한다.
C언어에서는 포인터를 사용해야 할 것을..
파이썬에선 = 이 객체 링크, == 이 값 할당 이므로
b=a 이런식으로 하면 b가 a와 같은 주소를 가르키게 하는 것이다.
주소가 같은지 확인하는 방법도 있다.
Reference count (래퍼런스 카운트)
파이썬의 모든 객체들은 래퍼런스 카운트라는 값을 갖는다.
파이썬에선 사용자가 딱히 메모리에 신경 쓸 필요가 없다. 안쓰면 알아서 제거하고
필요하면 알아서 확장해준다. (알아서 제거 하는 일을 Garbage Collection(쓰레기 수집) 이라고 한다.)
이 때, "알아서" 는 어떻게 이루어지는 것일까. 요 개념에서 래퍼런스 카운트 라는 녀석이 나온다.
모든 객체들은 래퍼런스 카운트라는 값을 가진다.
얼마나 많은 부분에서 이 객체를 사용하고 있는지를 나타내는 정수 지표이다.
사용하는 만큼 카운트가 올라가고, 0이 되면 메모리에서 떠내려간다.
그림 보면 대충 이해가 갈거라고 생각한다.
getrefcount() 함수를 이용하여 알아볼 수 있는데, 실제 값보다 1크게 나온다.
함수가 객체를 사용하기 위해 카운트를 하나 늘렸기 때문이다.
반응형