JVM ( Java Virtual Machine )
- 자바와 운영체제 사이에서 중개자 역할을 수행하며, 자바가 운영체제에 구애받지 않고 프로그램을 실행할 수 있도록 도와준다.
자바 프로그램의 실행 단계
자바 컴파일러에 의해 자바 소스 파일이 바이트 코드로 전환 , 이 바이트 코드를 JVM에서 읽어서 실행
JVM 메모리구조
- Garbage Collector, Excution Engine, Class Loader , Runtime Data Area로 나뉠 수 있다.
- **Java Compiler(자바 컴파일러)**에 의해 Java source(.java) 파일은 Byte code로 변환된다.
- **Class Loader(클래스 로더)**는 이 변환된 Byte code(.class) 파일을 JVM 내로 class를 로드하고 Link작업을 통해 배치 등 일련의 작업을 한다. 또 런타임시 class를 load한다.
- Execution Engine(실행 엔진) 은 Class Loader를 통해 JVM 내부로 넘어와 Runtime Data Area(JVM 메모리)에 배치된 Byte code들을 명령어 단위로 실행시킨다.
- **GC(Garbage Collector)**는 어플리케이션이 생성한 객체의 생존 여부를 판단하여, 더이상 참조되지 않거나 null 인 객체의 메모리를 해체시켜 메모리 반납을 한다.