2025-10-30

오늘 배운 것

📌 정의

자바 바이트코드를 실행할 수 있는 가상 머신(Virtual Machine)

  • 운영체제나 하드웨어에 독립적으로 자바 프로그램을 실행 가능하게 함
  • 컴파일된 .class 파일을 실행하며, 메모리 관리, 쓰레드 관리, GC(가비지 컬렉션) 등의 역할을 수행

🧱 JVM 구성 요소

구성 요소 역할
Class Loader .class 파일을 JVM 메모리에 로드
Runtime Data Area 프로그램 실행 시 필요한 데이터 저장 영역
Execution Engine 바이트코드를 기계어로 변환해 실행
Native Method Interface C/C++로 작성된 네이티브 메서드 호출
Native Method Libraries OS에 따라 다른 네이티브 코드 라이브러리

🧠 Runtime Data Area 구조 (JVM 메모리 구조)

영역 설명
Method Area 클래스 정보, static 변수, 상수 등이 저장됨
Heap 객체(instance)가 저장되는 공간, GC 대상
Stack 각 쓰레드마다 생성, 지역변수 + 호출 정보 저장
Program Counter (PC) 현재 실행 중인 명령어의 주소 저장
Native Stack C언어 등 네이티브 메서드용 스택

🔁 동작 흐름

1. Class Loader가 .class 파일을 메모리로 로드
2. Runtime Data Area에 필요한 구조를 세팅
3. Execution Engine이 바이트코드를 실행
4. GC가 불필요한 객체를 수시로 제거

⛏️ GC(Garbage Collection) 기본

  • Heap 영역의 불필요한 객체를 자동으로 정리
  • 주요 GC 방식:
    • Serial GC: 단일 스레드, 작은 애플리케이션
    • Parallel GC: 멀티스레드, Throughput 중시
    • CMS (Concurrent Mark Sweep): 지연시간 감소
    • G1GC: 예측 가능한 지연 + 고성능 (JDK 9부터 기본)

results matching ""

    No results matching ""