JVM (Java Virtual Machine)

전윤지·2021년 5월 27일
0

OS (운영체제)

목록 보기
2/6

1. JVM (Java Virtual Machine)

  • 자바 가상 머신
  • 자바를 실행하기 위한 가상 기계
  • 자바 프로그램이 어느 기기나 운영체제 상에도 실행 가능하게 함
  • 프로그램 메모리 관리, 최적화 함
  • 동적 메모리 할당, 해제 작업을 대신 해줌 (Garbage Collection)

2. JVM의 메모리 관리

1) 프로그램이 실행되면, JVM이 OS로부터 메모리를 할당 받음

2) 자바 컴파일러가 자바 바이트 코드(.class)로 변환

3) 변경된 파일들을 class loader를 통해 JVM 메모리 영역(Runtime Data Area)으로 로딩 함

  • class loader

    : 런타임 시 클래스들을 로딩시키며, 메모리에 로드 함

4) 로딩 된 class 파일들을 해석

5) 해석 된 바이트 코드는 메모리 영역에 배치되어 수행 됨

⇒ 이러한 과정을 거치며, JVM은 필요에 따라 스레드 동기화, 가비지 컬렉션 같은 메모리 관리 작업 수행


3. JVM Runtime Data Areas

: JVM이 할당받은 메모리 영역

1) PC 레지스터

  • 현재 실행중인 JVM 명령 주소 가짐

2) Stack Area

  • 지역변수, 매개변수, 임시 데이터 저장
  • 각 스레드마다 하나씩 할당
  • 원시(기본) 타입 변수 ⇒ 스택 영역에 직접 값을 가짐
  • 참조 타입 변수 ⇒ 객체 주소 가짐

3) Heap Area

  • 동적으로 생성된 객체(new 연산자로 생성 된)가 저장

  • 참조하는 변수가 없어지면 의미 없는 객체가 되어 GC의 대상이 됨

    • Garbage Collector (GC)

      : 프로그램이 동적으로 할당했던 메모리 영역 중 필요 없게 된 영역을 해제하는 기능

  • 모든 스레드에서 공유

4) Method Area (Static Area)

  • 정적 변수, 멤버 변수 저장 됨

5) Native Method Stack Area

  • 자바 이외의 언어로 된 코드를 위한 스택
  • 다른 언어의 코드를 수행하기 위해 존재

0개의 댓글