JVM) JVM을 공부하며 생긴 궁금증

Tarte·2025년 5월 21일

JAVA

목록 보기
4/4

1. JVM도 시스템 콜을 이용하는가?

  • JVM도 하나의 사용자 프로그램
  • OS 입장에서는 응용 프로그램
  • 따라서 JVM도 하나의 프로세스
    => 자바 프로그램 -> JVM -> 시스템 콜 -> OS 순서로 흐름(시스템 콜을 이용함)

2. JVM도 하나의 프로세스라면 왜 JVM의 메모리 구조만 따로 떼서 공부하는가?

  • JVM이 프로세스 중 하나라고 볼 수 있지만,
  • 자바 바이트코드를 실행하고 관리하는 복잡한 실행 환경이기 때문에,
  • 내부에서 다시 고유한 메모리 관리 방식과 실행 구조를 가짐

따로 공부하는 이유는?

  1. JVM은 "실행 환경" 자체이기 때문에
  • JVM은 자바 프로그램을 실행하는 가상의 OS 역할을 함
  • JVM 내부에 또 하나의 프로세스 구조가 있는 것처럼 동작
  1. 실행 대상이 바이트 코드
  • 일반 프로그램은 기계어가 실행되지만, JVM은 바이트 코드 실행
  • 바이트 코드 실행을 위해 특별한 메모리 구조와 실행 엔진 필요
  1. GC, ClassLoader, Excution Engine 같은 고유 개념
  • 일반 프로세스에서 볼 수 없는 JVM만의 기능 존재

JVM은 프로세스 위에 만들어진 미니 OS
JVM = 프로세스는 맞음!
하지만, JVM은 단순한 프로세스는 아니기 때문에 내부를 따로 공부

3. JVM의 메모리는 어디에 저장되는가?

  • JVM도 OS 입장에선 하나의 프로세스
  • 결국 Runtime Data Area도 프로세스 메모리 영역 내부 구조

4. JVM 메모리 영역(Runtime Data Area)는 왜 나눠져 있는가?

  • 데이터를 효율적으로 관리하기 위해 공유 여부, 수명, 접근 방식 기준으로 메모리 분리
    -Method Area: 클래스 정보 저장(JVM 전체 공유, 변경 없음)
  • Heap: 객체 저장(공유, GC 대상)
  • Stack:메서드 실행 흐름과 지역 변수(스레드 독립)
  • PC Register:현재 실행 중인 명령 추적(스레드별)
  • Native Method Stack:네이티브 메서드용(C, C++)
profile
기술 블로그

0개의 댓글