📦 JVM
.java(자바소스코드) → .class(자바바이트코드) ===>자바소스코드가 자바바이트코드로 변환되는 과정을 자바컴파일러라고 한다.
이걸 읽어서 실행하는 것이 JVM 즉, 자바 프로그램을 실행하는 가상 컴퓨터이다.
📦 자바 메모리
╔═══════════════════════╗
║ Method Area ║ ← 클래스, static 변수,static final 정보
╠═══════════════════════╣
║ Heap ║ ← 객체 저장 (new로 만든 것들), final
╠═══════════════════════╣
║ Stack ║ ← 지역 변수, 매개변수, 메서드 실행 정보
╚═══════════════════════╝
📘 1. Method Area (메서드 영역)
- 클래스에 대한 정보 저장: 클래스 이름, 메서드, static 변수 등
- JVM 시작 시 클래스가 로딩되면 이 영역에 저장됨
- 모든 스레드가 공유함
🧳 2. Heap (힙)
- new로 만든 객체들이 저장되는 공간
- 가장 큰 메모리 공간
- 모든 스레드가 공유함
- **Garbage Collector(GC)**가 관리 (필요 없어진 객체는 자동 삭제)
📦 3. Stack (스택)
- 메서드가 호출될 때마다 생성
- 지역 변수, 매개변수, 리턴 주소 등이 저장됨
- 메서드가 끝나면 자동으로 사라짐 (LIFO 방식: 마지막에 들어온 게 먼저 나감)
- 스레드마다 하나씩 있음
자바 메모리는 JVM이 프로그램 실행을 효율적으로 관리하기 위해 Stack, Heap, Method Area 등으로 나눠져 있고
Garbage Collector가 Heap을 자동으로 청소해준다.
'Language > Java' 카테고리의 다른 글
| Scanner와 BufferedReader 차이 (1) | 2025.08.28 |
|---|---|
| static, final, static final (3) | 2025.07.31 |
| 생성자에 대해.. (2) | 2025.07.29 |
| @Controller VS @RestController (0) | 2023.07.17 |
| length()메소드에 대해.. (0) | 2023.07.14 |