[면접 준비] JVM이란?
- 국비지원 (스파르타)
- 2025. 3. 26. 00:35
서론
드디어 2차 프로젝트가 끝이 났다. 이번에도 테스트를 진행하지 못했다. 무엇이 문제였을까?
도커도 하지못했고 문서화도 하지 못했다. 원래 다른 공부도 병행하면서 해야 되는데 시간이 없었다.
이게 그것중 하나다.
이번에 공부할건 JVM이고 최대한 인터넷으로 찾지않고 진행할예정이다.
그리고 살을 붙여나가는 형태가 좋지 않을까 싶다.
JVM이란 과연 무엇일까? Java Virtural Macine으로 자바 가상 환경에서 동작하는 것을 말한다.
결국 자바내에서 동작하는 가상 머신인것을 알 수 있다.
그러면 이게 왜 존재하는지 부터 생각을 해야 할거 같다.
흔히들 JVM환경의 언어를 사용하는 이유가 플랫폼에 구애받지않는다는 걸로 알고 있다.
결국 JAVA내에는 또 다른 환경이 존재하는 느낌이다. 그럼 생각을 해야 할것이
JVM은 어떻게 코드를 읽을 수 있을지 생각을 해야 한다.
리눅스나 window,mac같은 OS도 이런글을 독창적인 기계어로 해석해서 읽어야 하는 걸로 알고 있다. 왜냐하면
그들은 우리가 사용하는 자연어를 이해하지 못하기 때문이다.
그렇다는건 JVM도 이와 같은 행위를 해야 한다. 즉, 우리가 작성하는 코드가 JVM안으로 들어갈때 JVM만의 독창적인 기계어로 변환이
되어진다는 뜻이된다.
사실 더 세세한것도 있지만 지금은 기억은 나지 않는다.
그래서 적지는 않겠지만 암튼
변환이 되어지면 메모리를 언제까지 물고 있을 수 는 없다.
왜냐하면 JVM도 메모리 공간이 존재하기 때문에 계속 물고 있으면 언젠가 JVM은 터지고 말것이다.
이를 방지하기 위해 JVM에서는 GC라는것이 동작하게 되어진다. GC라는 것이 결국 자바 객체를 청소를 하는 걸로 이해하면 된다.
이렇게 청소하고 나면 JVM은 깨끗한 상태가 되어진다. 근데 여기서 의문이 드는것이 있다.
이건 조금더 공부를 해봐야 알거 같긴한데
GC는 어떻게 동작을 하는 걸까?
GC는 자바가 탄생했을때 부터 지금까지 변화한것이 없을까? 더 효율적인 방법은 없을까?등 GC는 복잡한 과정을 담고 있는듯한 느낌이 든다.
이제 이를 GPT에 돌려서 결과를 리턴해보자.
--GPT
1. JVM이란?
JVM(Java Virtual Machine)은 자바 애플리케이션을 실행하기 위한 가상 머신으로, OS와 독립적으로 동작하며 바이트코드를 해석하고 실행하는 역할을 한다.
2. JVM이 존재하는 이유
- 플랫폼 독립성 → OS와 관계없이 실행 가능 ("Write Once, Run Anywhere")
- 보안성 → 메모리 직접 접근 방지 (네이티브 코드보다 안전)
- 성능 최적화 → JIT(Just-In-Time) 컴파일러, GC로 실행 속도 개선
3. JVM의 주요 구성 요소
- 클래스 로더(Class Loader) → 바이트코드(.class) 로드
- 실행 엔진(Execution Engine) → 바이트코드를 해석(인터프리터) 또는 컴파일(JIT)하여 실행
- 런타임 데이터 영역(Runtime Data Area) → 메모리 관리 (Heap, Stack 등)
4. JVM의 실행 과정
- 자바 소스(.java) → 컴파일 → 바이트코드(.class) 생성
- JVM의 클래스 로더 가 바이트코드 로드
- 실행 엔진이 바이트코드를 해석(인터프리터) 또는 컴파일(JIT)하여 실행
5. GC(Garbage Collection)란?
- JVM이 사용하지 않는 객체를 자동으로 정리하는 기능
- 세대별 GC(Generational GC) 를 사용하여 메모리를 효율적으로 관리
- Young Generation → 새롭게 생성된 객체
- Old Generation → 오래된 객체 (Young에서 살아남은 객체)
- Metaspace → 클래스 메타데이터 저장
6. GC의 주요 알고리즘
- Serial GC → 단일 스레드, 작은 애플리케이션에 적합
- Parallel GC → 멀티 스레드, 일반적인 서버 환경에서 사용
- G1 GC → 병렬 & 동시 실행, 대규모 애플리케이션에 적합
- ZGC / Shenandoah GC → 짧은 지연시간이 필요한 경우 사용
7. JVM 최적화 & 튜닝 면접 질문 예시
- JVM의 역할과 동작 방식에 대해 설명하세요.
- JVM 메모리 구조를 설명하고, 각 영역의 역할을 알려주세요.
- GC의 동작 원리와 세대별 GC의 개념을 설명하세요.
- GC 튜닝이 필요한 상황과 방법에 대해 설명하세요.
- JIT 컴파일러가 무엇이며, 어떻게 동작하는지 설명하세요.
8. 한 줄 정리
JVM은 자바 코드 실행을 담당하는 가상 머신이며, GC를 통해 메모리를 자동 관리한다. 면접에서는 JVM의 구조, GC 원리, 최적화 방법을 정확히 이해하고 설명할 수 있어야 한다.
'국비지원 (스파르타)' 카테고리의 다른 글
[학습] 도커- Dockerfile, docker-compose.yml (0) | 2025.03.27 |
---|---|
[학습] 도커를 학습해보자!! (3) | 2025.03.26 |
왜 나에게만 이런일이 발생하는가? (0) | 2025.03.24 |
프로젝트에 권한 최큉! (0) | 2025.03.21 |
Btree (0) | 2025.03.20 |