JVM (Java Virtual Machine)
컴파일된 자바 바이트 코드를 실행하는 가상 머신이다.
구성요소
JVM의 구성 요소는 다음과 같다.
- 클래스 로더
- 런타임 데이터 영역
- 실행 엔진
- 네이티브 영역

JVM의 장단점을 설명해주세요
Java와 OS 사이에서 중재자 역할을 수행하여 OS와 무관하게 실행을 보장하고 GC를 통해 프로그램 메모리를 자동으로 관리하고 최적화 합니다. 개발자가 직접 메모리를 제어하지 않기에 해당 작업으로 인해 발생하는 휴먼 에러를 예방할 수 있습니다.
단점으로는 바이트 코드를 기계어로 바꾸는 과정이 한번의 컴파일링으로 기계어가 만들어지는 C/C++에 비해 속도가 느립니다. 이를 JIT를 통해 자주 실행되는 바이트 코드 영역을 컴파일 해두기 때문에 속도의 격차를 줄이고 있습니다.