목록 보기
JVM heap은 멀쩡한데 왜 메모리가 터질까? — Docker 환경 네이티브 메모리 삽질기 (Part 1)
백엔드

JVM heap은 멀쩡한데 왜 메모리가 터질까? — Docker 환경 네이티브 메모리 삽질기 (Part 1)

여기어때
여기어때
2026년 7월 1일

두줄요약

Docker 환경에서 힙은 멀쩡한데 메모리가 계속 늘어나는 원인을 추적한 글입니다. NMT로 JVM 내부를 확인했지만 실제 RSS와 차이가 있어 네이티브 메모리 문제를 의심했습니다.

문제 상황

  • Docker 환경의 JVM 애플리케이션에서 힙은 정상인데 서버 메모리 사용량이 지속적으로 증가하는 현상
  • 트래픽과 무관하게 RSS가 우상향하며 cgroup 제한에 가까워져 OOM 종료로 이어지는 상황

원인 분석

  • JVM 힙이 아닌 네이티브 메모리 증가 가능성
  • NMT 기준 메모리와 top의 실제 RSS 간 5GB가량 차이 발생
  • JVM 내부 추적 대상 밖의 malloc 메모리는 NMT로 확인 불가

해결 방법

  • Native Memory Tracking 활성화와 baseline, summary.diff로 JVM 내부 메모리 변화 추적
  • GC 로그, Docker 메모리 제한, JVM 버전 변경 등 가설 검증 시도
  • Part 1에서는 최종 원인 확정 전, 네이티브 메모리 경로를 더 추적하는 단계까지 정리

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...