컴퓨터사이언스 부트캠프 with 파이썬 책을 공부하며 정리한 포스팅입니다.
개인 공부후 정리용으로 남기는 포스팅으로 내용상에 오류가 있을수 있습니다.
예제 코드는 Computer-Science 를 통해 실습하고 있습니다.
핵심 개념
- 레퍼런스 카운트(reference count)
- 가비지 컬렉션(garbage collection)
가비지 컬렉션(garbage collection)
- 사용하지 않는 메모리를 언어 차원에서 해제한다는 개념
- 힙(heap)에 할당한 메모리는 프로그래머가 직접 해제해야 함.
- 하지만 자바, C#, 파이썬 등에서는 해당 언어가 스스로 해제
- 가비지 컬렉션은 여러가지 종류가 있음
- Mark and Sweep, Stop and Copy, Reference Counting 등
- 기본적인 내용은 이곳을 참조
- 파이썬은 레퍼런스 카운팅(Reference Counting)으로 가비지 컬렉션 구현
레퍼런스 카운트(Reference Count)
a = 10
b = a
- 위처럼 코드 작성시 변수 a와 b가 상수 객체 10을 가리킴.
변수 | 메모리 |
---|---|
a | 10 |
b |
a ------> 10
^
b ---------|
- 이렇게 되면 상수 객체 10의 레퍼런스 카운트가 2가 됨.(a -> 10, b -> 10)
- a와 b를 각각 다른 객체를 가리키도록 코드를 수정하면
- 상수 객체 10을 가리키는 참조가 모두 없어지며 레퍼런스 카운트가 0이 됨.
- 레퍼런스 카운트가 0이 되면 메모리에서 자동 해제.
Comments