Reference: https://asfirstalways.tistory.com/158

Java Virtual Machine

  1. Java 와 OS 사이에서 중개자 역할
  2. 스택기반의 가상머신
  3. Memory 관리
  4. Garbage Collection(GC)

→ JVM의 Memory 구조 등을 파악하여 (Memory 효율적 이용), 속도저하, 튕김 현상 등을 사전 방지 혹은 문제 Memory 관련 Troubleshooting 발생시 대응이 가능

Flow

  1. Java Application이 실행 될 때, JVM이 OS로부터 Application이 필요로 하는 Memory를 OS로부터 할당 → JVM이 OS로부터 할당 받은 Memory를 용도에 따라 여러 영역으로 나누어 관리
  2. javac(Java Compiler)가 .java 파일을 읽고 Java Byte code(.class)로 변환
  3. 컴파일 된 .class 파일을 JVM으로 Loading (Class loader)
  4. Loading 된 .class 파일들이 Execution engine로 해석
  5. 해석 완료된 Byte code 가 Runtime Area 에 배치되어 Application 구동

→ Application이 실행되는 과정에 JVM이 필요에 따라 Thread Synchronization, Garbage Collection 등 관리 작업이 수행된다

JVM Architecture

Reference: https://dzone.com/articles/jvm-architecture-explained

Reference: https://dzone.com/articles/jvm-architecture-explained

  1. Class Loader SubSystem

    : Runtime 시, class byte code를 Loading, Class Instance 생성 후 Class Loader를 통해 Memory에 Load

  2. Runtime Data Areas

    : JVM이 Application 실행을 위해 OS로부터 할당 받은 Memory area

  3. Execution Engine