Python 메모리 관리, 왜 free해도 OS는 메모리를 돌려받지 않을까
First Steps into Memory Management in Python
Python의 메모리 할당과 해제를 CPython 3.12 기준으로 정리한 글. 작은 객체는 pymalloc이 arena와 pool로 관리하고, 큰 객체는 malloc을 쓴다. 참조 카운팅은 즉시 객체를 파괴하지만 순환 참조는 GC가 처리한다. 메모리를 할당한 뒤 free해도 OS가 보는 메모리는 항상 줄어들지 않는다는 점, 그리고 del이나 직접 전달로 참조 수명을 제어할 수 있다는 인사이트를 전한다.
메모리가 한 번 할당되면, 그것을 해제한다고 해서 OS가 보는 메모리가 항상 줄어드는 것은 아니다.