Programming/Java
면접에서 진짜 자주 나오는 자바 질문 - 섹션 7. JVM, GC, 자바 런타임 메커니즘
마실개
2025. 4. 17. 16:21
반응형
자바 면접에서 빠지지 않고 나오는 분야 중 하나가 바로 JVM과 가비지 컬렉션(GC) 관련 질문입니다.
"자바는 자동 메모리 관리 언어라며? 그런데 왜 GC를 그렇게 묻는 걸까?"
이 질문에 대해선 아주 명확한 답이 있습니다.
바로, JVM과 GC에 대한 이해도가 시스템의 성능과 안정성을 좌우하기 때문입니다.
이번 포스트에서는 JVM의 구조부터 GC의 종류, 메모리 누수 사례, 그리고 실행 흐름까지, 면접에 꼭 나오는 핵심 개념만 정리해봤습니다.
1. JVM의 구조와 역할
JVM(Java Virtual Machine)은 자바 바이트코드를 실행하는 가상 머신으로, 다음과 같은 구조로 구성됩니다:
- Class Loader: .class 파일을 메모리에 로딩
- Runtime Data Areas
- Heap: 객체 저장 (GC 대상)
- Stack: 메서드 호출 스택, 지역 변수 저장
- Method Area(Metaspace): 클래스 메타데이터 저장
- Execution Engine: 바이트코드 실행
- 인터프리터 + JIT(Just-In-Time) 컴파일러
- Native Interface & Libraries
JVM은 자바 코드가 OS와 독립적으로 실행될 수 있도록 하며, 동시에 메모리와 자원 관리를 통합적으로 수행합니다.
2. 가비지 컬렉션(GC)의 원리와 종류
GC는 JVM이 더 이상 사용되지 않는 객체를 감지하여 메모리를 자동으로 회수하는 메커니즘입니다.
GC의 동작 방식
- Mark: 어떤 객체가 참조되고 있는지 식별
- Sweep: 참조되지 않는 객체를 정리
- Compact: 조각난 메모리를 정리해 연속된 공간 확보
주요 GC 종류
GC 종류 | 특징 |
Serial GC | 단일 스레드, 적은 리소스에서 유리 |
Parallel GC | Throughput 중시, 병렬 처리 지원 |
CMS | 낮은 지연시간 확보, 일부 병렬 처리 |
G1 GC | Region 기반, pause 예측 가능 |
ZGC / Shenandoah | 초저지연, 대용량 힙 지원 (JDK11+) |
면접에서 자주 묻는 포인트:
GC는 성능 최적화, 장애 대응 시 매우 중요한 요소로, 최소한 G1과 CMS의 차이점 정도는 명확히 설명할 수 있어야 합니다.
3. 자바에서 메모리 누수가 발생하는 경우
GC가 있더라도 참조가 끊기지 않으면 메모리는 회수되지 않습니다.
자바에서도 메모리 누수가 발생할 수 있는 대표적인 예시는 다음과 같습니다:
- 정적 컬렉션(static Map, List)에 객체 저장 후 해제하지 않음
- 이벤트 리스너 등록 후 제거 누락
- 외부 자원(File, Socket) 사용 후 close() 누락
- ThreadLocal 사용 후 remove() 안함
면접에서 자주 묻는 포인트:
“GC가 있는데 왜 메모리 누수가 발생하죠?” → 참조가 남아 있으면 GC가 회수하지 못하기 때문입니다.
4. 자바 프로그램의 실행 흐름
자바는 다음과 같은 순서로 실행됩니다:
- .java 파일 작성
- javac로 .class 바이트코드 생성
- JVM이 ClassLoader로 .class 로딩
- Execution Engine이 바이트코드 실행 (인터프리트 + JIT)
- GC 및 기타 런타임 서비스 작동
이 흐름을 이해하고 있으면, 컴파일 오류, 클래스 로딩 실패, GC 병목 등의 문제를 빠르게 파악할 수 있습니다.
5. JVM 튜닝을 위한 주요 옵션
JVM의 실행 성능은 아래와 같은 옵션을 통해 조절할 수 있습니다:
옵션 | 설명 |
-Xms, -Xmx | 힙 메모리 초기/최대 크기 |
-XX:+UseG1GC | GC 방식 지정 (G1 GC 사용) |
-Xlog:gc | GC 로그 출력 (JDK9+) |
-XX:MaxMetaspaceSize | 메타스페이스 최대 크기 |
-XX:+PrintGCDetails | GC 상세 로그 출력 |
GC 로그를 분석하면 애플리케이션의 메모리 사용 패턴과 병목 구간을 파악할 수 있습니다.
마무리
JVM과 GC는 단순한 시스템 지식이 아니라, 현업에서 성능 최적화와 장애 분석의 핵심 도구입니다.
면접에서는 단편적인 지식보다, “왜 그렇게 설계되어야 하는가?”, “실무에서는 어떻게 대응하는가?”에 대한 사고력을 중점적으로 평가합니다.
반응형