
백엔드
메모리 누수의 개념과 방지 방법
두줄요약
메모리 누수의 개념과 원인을 GC Root 관점에서 설명했습니다. 리소스 해제, static 변수 관리, 약한 참조 활용으로 예방하는 방법을 정리했습니다.
핵심 내용
- 메모리 누수는 더 이상 사용하지 않는 객체가 힙에 남아 불필요한 메모리를 차지하는 상태
- GC Root에 의해 reachable로 유지되면 가비지 컬렉터가 회수하지 못해 성능 저하와 OOM 위험이 커짐
- 누수 의심 시 VisualVM, Eclipse Memory Analyzer, 힙 덤프 분석으로 사용량과 참조 관계를 점검
- 대표 예방 방법으로 리소스 close, static 변수 정리, 비정적 내부 클래스 주의, WeakReference 활용이 제시됨
적용해볼 점
- InputStream, ResultSet, Connection 등은 try-with-resources로 자동 해제
- 불필요한 static 참조는 제거하고 더 이상 쓰지 않으면 null 처리
- 큰 객체 캐시나 내부 클래스 설계에서는 강한 참조 유지 여부를 점검
