'레퍼런스 카운트'에 해당되는 글 1건

  1. 2012.11.25 메모리 관리(쓰레기 수집) // 객체의 신원 식별

쓰레기 수집

- 파이썬에서는 특별히 사용자가 관리해야 할 메모리는 없다. 모든 것은 자동으로 생성되고 자동으로 환원된다. 

추가로 필요한 메모리가 있으면 시스템에서 알아서 확장해 준다. 더 이상 사용되지 않는 객체들은 자동적으로 사라진다. 이러한 작업을 쓰레기 수집(Garbage Collection)이라 한다.

파이썬은 모든 것이 객체로 관리되며, 모든 객체는 레퍼런스 카운트(Reference Count)라는 값을 가지고 있다. 이것은 얼마나 많은 부분에서 객체를 참조하고 있는가를 나타내 주는 정수이다.



레퍼런스 카운트를 얻는 법

- sys 모듈의 getrefcount 함수를 이용하면 된다.


여기서 레퍼런스 카운트가 1씩 증가되서 출력되는 것은 getrefcount 함수가 이 객체를 처리하기 위해서 새로운 카운트 값을 1 증가시켰기 때문이다.

따라서, 실제의 카운트 값은 getrefcount 함수가 넘겨주는 값보다 1 작다.






객체의 신원 식별하기

- 대부분의 경우에는 필요 없겠지만 id 내장 함수를 이용하면 객체의 주소를 식별할 수 있다. 두 객체의 id가 동일하다면, 같은 객체를 참조하고 있는 것이다.

a, b는 모두 같은 id의 객체를 가리키고 있다.

만일 두 이름 a, b가 같은 객체를 참조하고 있는가를 알려면 a is b를 이용한다.


여기서 a = 1, b = 1 했는데... 와우.. 이 결과를 보기 전까지 나는 a, b가 서로 다른 객체를 가리키고있지 않을까? 하며 생각했었다....

그런데 여기 결과는 같은 객체를 이름 a,b가 가리키고있다..

곰곰히 생각해보니 당연한 결과였다. 왜냐하면, 똑같은 객체를 굳이 다시 한번 만들필요없으니 말이다... 아항!!!

'Programming > Python' 카테고리의 다른 글

예약어 pass  (0) 2012.11.26
Python 제어문(if, for, while)  (0) 2012.11.25
파이썬의 객체 자료형  (0) 2012.11.25
변경 가능성 (python에서 정말 중요하다고 생각하는 개념)  (0) 2012.11.25
리스트, 튜플, 사전  (0) 2012.11.25
Posted by scii
: