728x90 가비지컬렉터2 [PYTHON] 메모리 누수(Memory Leak) 추적의 마침표 : objgraph를 활용한 객체 참조 분석 1. 서론: 가비지 컬렉터가 해결하지 못하는 '유령 객체'파이썬은 기본적으로 참조 횟수 계산(Reference Counting)과 순환 참조 가비지 컬렉터(GC)를 통해 메모리를 관리합니다. 이론적으로는 메모리 누수가 발생하지 않아야 하지만, 실제 복잡한 애플리케이션에서는 메모리 누수가 빈번히 발생합니다. 이는 가비지 컬렉터가 여전히 누군가에 의해 참조되고 있는 객체를 '사용 중'이라고 판단하여 해제하지 못하기 때문입니다. 특히 전역 변수, 캐시 리스트, 혹은 클로저 내부에 갇힌 객체들은 해제되지 않고 메모리를 야금야금 갉아먹습니다. 이때 필요한 도구가 바로 objgraph입니다. 이 강력한 라이브러리는 현재 메모리에 상주하는 객체들 사이의 복잡한 관계를 시각화하고, 어떤 녀석이 해제되지 않고 남아있는지.. 2026. 2. 21. [JAVA] Garbage Collector(GC) 완벽 가이드 : Serial부터 ZGC까지 핵심 정리 자바 개발자에게 메모리 관리의 자동화는 축복과도 같습니다. C나 C++처럼 직접 메모리를 해제할 필요 없이, JVM(Java Virtual Machine)의 가비지 컬렉터(Garbage Collector, GC)가 더 이상 사용되지 않는 객체를 식별하고 제거해 주기 때문입니다. 하지만 애플리케이션의 규모가 커지고 응답 속도가 중요해짐에 따라, 어떤 GC를 선택하느냐는 서비스의 품질을 결정짓는 핵심 요소가 되었습니다. 오늘날 사용되는 5가지 핵심 GC의 특성과 진화 과정을 깊이 있게 살펴보겠습니다.1. 가비지 컬렉션의 핵심 메커니즘가비지 컬렉터는 기본적으로 'Stop-the-world'라는 현상을 수반합니다. 이는 GC를 실행하기 위해 JVM이 애플리케이션의 실행을 멈추는 것을 의미합니다. GC 튜닝의 목.. 2026. 1. 22. 이전 1 다음 728x90