CPython의 메모리 할당 시스템-1



CPython의 메모리 할당 시스템


Python의 기본 구현체 CPython의 메모리 할당 시스템은
C의 동적 메모리 할당 시스템에 의존한다.


CPython과 C의 동적 메모리 할당 시스템 
중간 계층에 속하는 PyMemAPI
메모리 관리의 단순화를 통해
프로그래머가 애플리케이션 로직에 집중할 수 있다.


메모리 관리의 단순화라고 하면은,
프로그래머가 직접 객체나 변수에 할당된 메모리를 해제하는 것이 아니라
(메모리 할당 해제 소스코드를 작성함으로써)

런타임 상에서 제공하는 GC, 참조 카운팅 기법을 사용하여
메모리를 자동으로 해제한다.


참조 카운팅 API


- Py_INCREF : 값에 의존할 때 증가한다.
- Py_DECREF : 값에 의존하지 않을 때 감소한다.

참조 카운트 값이 0이 될 때 자동으로 해제된다.

음수가 되기 시작한다는 것은
증감 연산의 짝이 맞지 않는다는 뜻이며
참조 카운팅에 결함이 생긴 것이다.

코드 로직 상 '순환 참조' 가 일어날 때도 생기는데
'순환 참조'를 해결하기 위한 GC가 Background에서 구동된다.






댓글

이 블로그의 인기 게시물

실무진 면접 경험으로 정리하는 백엔드 (1) : 에듀 테크 기업 면접

노마드코더 개발자북클럽 Clean code 완주, 독후감

Blogger 커스터마이징 : CSS 수정 (sticky-header)