JVM의 구조와 Java 프로젝트 실행시 동작 흐름

우리가 작성한 자바 프로그램이 동작하기 위해서는 javac 명령어를 통해 .java 파일을 .class 바이트코드로 컴파일한 뒤 java 명령어를 통해 이 .class 코드를 JVM이 읽어 실행해야한다. JVM은 여러 구성요소들로 이루어져 있으며 이 요소들이 유기적을 연결되어 프로그램을 지속적으로 동작시킨다.

JVM 구조

[!info]- JVM 이란? JVM(Java Virtual Machine)이란 Java 프로그램을 멀티플랫폼에서 동작시킬 수 있도록 도와주는 Java 프로그램 실행도구이다.

  1. Class Loader
  2. Runtime Data Area
  3. Execution Engine
  4. Garbage Collector? Execution Engine에 포함되는 건가?

Class Loader의 과정

  • 변환된 .class와 Class Library들을 JVM의 Runtime Data Area로 로드하는 역할을 한다.
  • 실행시 필요한 class들을 load한다.(Link 과정)
  • 런타임시 class를 load한다.

Runtime Data Area

Java 8 or 7 이전 이후로 구조가 어떻게 변했는지 Check

  1. Method Area
    • Runtime Constant Pool 포함함
  2. Heap Area
    • Young Generation(Eden, Survivor0, Survivor1) - Application이 사용
    • Old Generation - Application이 사용
    • Permanent - JVM에 사용
  3. Stack Area
  4. PC 레지스터
  5. Native Method Stack

Execution Engine의 동작

  • 인터프리터
  • JIT
  • GC

GC의 동작

흐름 정리

참고

카테고리:

업데이트:

댓글남기기