자바 실행 엔

동동주·2024년 3월 29일

CS스터디_자바

목록 보기
7/19

Execution Engine 이란?

  • Class Loader에 의해 JVM으로 Load된 Class 파일(바이트코드)들은 Runtime Data Areas의 Method Area에 배치되는데, JVM은 Method Area의 바이트 코드를 Execution Engine에 제공하여, Class에 정의된 내용대로 바이트 코드를 실행시킨다. 이 때, Load된 바이트코드를 실행하는 Runtime Module이 Execution Engine(실행 엔진)이다.

Execution Engine의 실행 방식

  • 실행 엔진은 바이트코드를 명령어 단위로 읽어서 실행하는데, 두 가지 방식을 혼합하여 사용한다.

1. Interpreter 방식

  • 바이트코드를 한 줄씩 해석, 실행하는 방식이다. 초기 방식으로, 속도가 느리다는 단점이 있다.

2. JIT(Just In Time) 컴파일 방식 또는 동적 번역(Dynamic Translation)

  • 그래서 나온 것이 JIT(Just In Time) 컴파일 방식이다.

  • 바이트코드를 JIT 컴파일러를 이용해 프로그램을 실제 실행하는 시점(바이트코드를 실행하는 시점)에 각 OS에 맞는 Native Code로 변환하여 실행 속도를 개선하였다.

  • 하지만, 바이트코드를 Native Code로 변환하는 데에도 비용이 소요되므로, JVM은 모든 코드를 JIT 컴파일러 방식으로 실행하지 않고, 인터프리터 방식을 사용하다 일정 기준이 넘어가면 JIT 컴파일 방식으로 명령어를 실행한다.

  • 또한, JIT 컴파일러는 같은 코드를 매번 해석하지 않고, 실행할 때 컴파일을 하면서 해당 코드를 캐싱해버린다. 이후에는 바뀐 부분만 컴파일하고, 나머지는 캐싱된 코드를 사용한다.

  • 출처:
    https://m.blog.naver.com/ksw6169/221647376178

0개의 댓글