CS

[CS] Java의 JVM이란?

lnacles 2023. 12. 25. 23:04

프로그래밍 언어가 실행되는 방법에 따라 컴파일러(Compiler) 언어와 인터프리터(Interpreter)언어로 나누어집니다.

 

컴파일러는 컴파일 + 실행, 인터프리터는 실행이라는 차이점으로 상황에 따라 장단점을 가지고 있습니다.

 

자바는 컴파일러 언어로 실행을 위해 단 한 번의 컴파일과 실행 과정을 거치게 됩니다.

 

 

자바 코드를 빌드하면 .class 파일이 만들어집니다. javac 명령어와 같습니다.

 

이후 class 파일을 실행시키면 CPU가 읽을 수 있는 기계어로 번역 되는 과정이 필요합니다.

 

이 역할을 수행 하는 것인 JVM입니다.

 

 

프로젝트의 규모가 커질 때 컴파일 되는 시간이 오래 걸릴 수 있다는 단점을 가지고 있습니다.

 

이러한 단점을 해결 하기 위해 JVM에는 JIT(Just-In-Time) 컴파일러가 있습니다.

 

JIT 컴파일러는 JVM에서 동작하며 프로그램을 실행하는 시점에 기계어로 번역하는 컴파일러입니다.

 

JIT 컴파일러의 기능

  • 머신코드 캐시 : 반복되는 기계어 번역을 줄입니다.
  • 머신코드 최적화 : 런타임 환경에 맞게 최적화합니다.

JIT 컴파일러는 자바 성능 향상에 도움을 주지만 애플리케이션 시작단계에는 Cache가 없는 단점이 있습니다.

 

애플리케이션 시작 후 의도적인 실행으로 기계어가 캐시에 값을 미리 저장하게 하는 JVM Warm up 같은 작업도 있습니다.