오늘은 자바의 기초 개념에 대해서 정리해보겠습니다.
1. JVM이란?
자바가상머신이라고도 하며 자바를 실행할 수 있도록 해주는 엔진 역할을 합니다.
컴파일러가 .java파일을 .class로 바꾸면, jvm은 .class 파일을 컴퓨터가 이해하는 기계어로 바꿔 실행시켜줍니다.
2. JVM의 주요 구성 요소와 기능
JVM 내부에는 크게 세 가지 영역이 있습니다.
① 클래스 로더 (Class Loader)
작성한 .class 파일을 읽어와서 JVM의 메모리 영역에 배치하는 역할을 합니다. 프로그램 실행 중에 필요한 클래스를 그때그때 동적으로 로드합니다.
② 런타임 데이터 영역 (Runtime Data Areas)
프로그램을 실행하기 위해 OS로부터 할당받은 메모리 공간입니다. 가장 중요한 두개는 스택과 힙이 있습니다.
- 스택(Stack): 메서드 호출 정보, 지역 변수 등이 저장되는 곳입니다. (임시 저장소)
- 메서드가 호출될 때마다 각각의 '프레임'이 생기고 끝나면 바로 사라집니다. - 힙(Heap):
- new 키워드로 생성된 모든 객체들이 저장되는 곳입니다. (공유 저장소)
- 스택에 있는 변수는 이 힙에 있는 객체의 '주소'를 가리킵니다.
③ 실행 엔진 (Execution Engine)
메모리에 올라온 Bytecode를 실제로 실행합니다. 두 가지 방식이 섞여 있습니다.
- 인터프리터: 명령어를 한 줄씩 읽어서 실행합니다. (다소 느림)
- JIT(Just-In-Time) 컴파일러: 반복되는 코드를 미리 기계어로 변환해 두어 실행 속도를 높여줍니다.
- 가비지 컬렉터 (Garbage Collector, GC): 더 이상 사용하지 않는 객체를 메모리에서 자동으로 삭제합니다. (아무도 참조하지 않아 고립된 객체를 지움)
'Java' 카테고리의 다른 글
| [Java] 리플렉션(Reflection) (0) | 2026.01.13 |
|---|---|
| [Java] 인터페이스와 추상클래스 (0) | 2026.01.10 |
| [Java] 객체지향 - final 2 (0) | 2026.01.09 |
| [Java] 객체지향 (0) | 2026.01.08 |
| [Java] JVM 2 (0) | 2026.01.07 |