JVM 이란?

정의

크게 2가지 역할을 한다.

  1. 자바가 운영체제의 종류에 영향받지 않고 작동되도록 한다.
  2. 메모리 관리를 자동으로 해준다.(GC)

자바 애플리케이션이 실행될 때 JVM에서 일어나는 과정은 아래와 같다.

  1. Java Compiler.java 파일을 Java Byte code로 변환한다.
  2. **Class Loader(클래스 로더)**가 이 변환된 Byte code(.class) 파일을 JVM 내로 class를 로드하고, Link 작업을 통해 엮는다. 그리고 이를 Runtime Data Area로 적재하는 역할을 한다. 자바 애플리케이션이 실행 중일 때 이런 작업이 수행된다.
  3. **Execution Engine(실행 엔진)**은 Class Loader를 통해 JVM 내부로 넘어와 Runtime Data Area(JVM 메모리)에 배치된 Byte code들을 명령어 단위로 실행시킨다.
  4. **GC(Garbage collector)**는 어플리케이션이 생성한 객체의 생존 여부를 판단하여, 더 이상 참조되지 않거나 null인 객체의 메모리를 해체시켜 메모리 반납을 한다.