페이지

2022년 8월 20일 토요일

17.1 메모리 관리

 파이썬은 필요 없어진 객체를 메모리에서 자동으로 삭제합니다. 이 고마운 기능 덕에 우리는 메모리 관리를 의힉할 일이 크게 줄어듭니다. 불필요한 객체는 파이썬 인터프리터가(우리 모르게) 제거해주기 때문에 우리는 더 중요한 작업에 집중할 수 있는 것이죠. 그렇더라도 코드를 제대로 작성하지 않으면 때때로 메모리 누수(memory leak)또는 메모리 부족(out of memory)등의 문제가 발생합니다. 특히 신경망에서는 큰 데이터를 다루는 경우가 많아서 메모리 관리를 제대로 하지 않으면 실행 시간이 오래 걸리는(CPU의 경우 실행할 수조차 없는)일이 자주 발생합니다. 그렇다면 파이썬은 메모리를 어떤 식으로 관리하고 있을까요? 파이썬(정확하게 CPython)의 메모리 관리는 두 가지 방식으로 진행됩니다. 하나는 참조(reference)수를 세는 방식이고, 다른 하나는 세대(generation)를 기준으로 쓸모없어진 객체(garbage)를 회수(collection)하는 방식입니다. 이 책에서 전자를 '참조 카운트'로, 후자를 'GC(Gabage Collection)라고 부르겠습니다. 우선 참조 카운트에 대해 설명합니다.

문헌에 따라 참조 카운트 방식의 메모리 관리도 GC로 보기도 합니다. 이 책에서는 둘을 구분해서 부르겠습니다.


댓글 없음: