Live-Study

1주차 : JIT 컴파일러란 무엇이며 어떻게 동작하는지

WOOKTAE 2021. 2. 28. 16:02

JIT 컴파일러란 무엇이며 어떻게 동작하는가 ?

 JIT 컴파일러

   - 기존 클래스파일(바이트코드)를 실행하는 방법은 Interpreter 방식이 기본이다. Interpreter 방식은 명령어를 하나씩 해석해서 처리하는 개념이기 때문에 명령어 하나하나 실행하는 속도는 빠를지 모르지만 전체코드 관점에서는 실행 속도가 느린 단점을 가지고 있다. 해당 문제를 해결하기 나온 방법이 JIT 컴파일러이고

JIT 컴파일러는 런타임 시 클래스파일(바이트코드)를 네이티브 기계어로 한방에 컴파일 후 사용하는 개념으로 이해하는 것이 편한다.

 

전체 컴파일 후 캐싱 > 이후 변경된 부분만 컴파일하고 나머지는 캐시에서 가져다가 바로 실행.

바로 꺼내서 사용하고 변경 부분만 컴파일 하기 때문에 코드 수행속도가 Interpreter 방식에 비해 빠르다.

 

 

JIT 컴파일러의 내부구조는 아래와 같으며 JIT컴파일러는 바이트코드를 일단 중간 단계의 표현인 IR ( Intermediate Representataion) 로 변환하여 최적화를 수행하고 그 다음에 네이티브 코드를 생성

 

 

컴파일된 코드라 할지라도 자주 호출되지 않으면 네이티브 코드에서 제거하고 해당 부분은 인터프리터 방식으로 동작한다.

 

 

 

JIT 컴파일러는 Just In Time 컴파일러로 바이트 코드를 기계어로 번역하여 실행하는 것을 뜻한다.

Interpreter 방식은 바이크 코드를 한 줄씩 읽으면서 코드를 실행하기 때문에 동일한 메소드를 실행하는 경우 중복해서 번역하는 비효율이 있다.

이를 방지해서 보다 좋은 성능을 낼 수 있게 하기 위해 JIT 컴파일러는 번역한 내용을 캐싱에 두었다가 동일한 메소드를 실행할 경우 다시 번역하지 않고 캐싱된 내용을 실행하는 것으로 알고 있다.