JVM이란?
2025. 1. 23. 15:30ㆍ개발/개념 및 기법
728x90
반응형
1. JVM이란?
JVM은 자바 프로그램 실행의 핵심 엔진이며, 바이트코드를 기계어로 번역하고 실행한다.
(1) 바이트 코드 실행
- 자바 소스 코드(.java)는 컴파일러(javac)에 의해 바이트코드(.class)로 변환된다.
- JVM은 이 바이트코드를 실행 가능한 기계어로 번역하여 실행한다.
- 플랫폼 독립성을 보장하는 이유가 바로 이 바이트 코드 때문!!
(2) 플랫폼 독립성 제공
- 자바 프로그램은 특정 운영체제에 의존하지 않는다.
- JVM이 설치되어 있다면 어떤 환경에서든 동일하게 실행할 수 있다.
(3) 메모리 관리
- JVM은 프로그램 실행 시 필요한 메모리를 자동으로 관리한다.
- 주요 메모리 영역:
- Heap: 객체와 인스턴스 변수가 저장됨 (GC에 의해 관리)
- Stack: 메서드 호출과 지역 변수가 저장됨 (힙보다 빠른 접근)
- Method Area (or MetaSpace): 클래스의 구조와 메타데이터 정보가 저장됨
- PC Register: 각 스레드의 현재 실행 위치를 저장
- Native Method Stack: 네이티브 코드(C, C++ 등)의 실행에 사용됨
(4) Garbage Collection (GC)
- 불필요한 객체를 자동으로 삭제하여 메모리 회수
(5) Multithreading 지원
- 여러 스레드를 관리하여 멀티 스레드 환경을 지원
결국 JVM은 자바 프로그램의 핵심 실행 엔진으로, 개발자가 코드를 실행 환경에 신경 쓰지 않고 작업할 수 있게 도와준다.
2. JVM의 작동 과정
- 소스코드 컴파일
- .java 파일 → javac → .class 파일 (byte code)
- 클래스 로딩
- JVM의 Class Loader가 .class 파일을 로드함
- 바이트코드 실행
- JVM의 Execution Engine이 바이트코드를 실행 가능한 기계어로 변환함
- 인터프리터: 바이트코드를 한 줄씩 읽어서 실행
- JIT (Just-In-Time) 컴파일러: 반복 실행되는 코드를 기계어로 미리 변환해 성능 향상
- JVM의 Execution Engine이 바이트코드를 실행 가능한 기계어로 변환함
- 런타임 관리
- JVM은 메모리 할당, 스레드 관리, 예외 처리, 가비지 컬렉션 등을 수행함
728x90
반응형
'개발 > 개념 및 기법' 카테고리의 다른 글
KMP vs CMP (1) | 2025.01.25 |
---|---|
Kotlin Multiplatform (KMP) (0) | 2025.01.24 |
Java에서 try~catch문, 남용하면 문제 없을까? (0) | 2024.07.30 |
[개발 기본 개념]비트 연산자 (0) | 2023.05.26 |
참조 (1) | 2023.02.24 |