DevBoi

[Java] JIT 컴파일러 본문

Language/[Java]

[Java] JIT 컴파일러

HiSmith 2022. 3. 15. 11:59
반응형

Just in Time 컴파일러라고도 불리는 JIT 컴파일러는, 바이트 코드를 컴퓨터 프로세서로 직접 보낼수있는

명령어로 바꾸는 프로그램이다.

 

자바는 바이트코드를 한번 컴파일하는 과정과 바이트코드를 인터프리터하는 방식 2가지를 진행한다.

인터프리터 방식은 소스코드를 런타임시에 한줄한줄 읽어 들여야 하는방식 때문에 컴파일 방식보다 느리다.

 

1) 컴파일 방식 : 소스코드를 한꺼번에 컴퓨터가 읽을수있는 기계어로 변환

2) 인터프리터 방식 : 소스코드를 빌드시에는 아무것도 하지 않다가, 런타임시에 한줄한줄 읽어가며 반환

 

JIT는, 한번 읽어서 기계어로 변경한 소스코드는 번역하지 않는다.

정확히는 반복되는 코드를 모두 컴파일러로 컴파일 시킨다.

JIT는 실행엔진 파트에 속해서, 중복되는 소스가 있다면, 인터프리팅 시키지않고, 저장소에 캐싱한 코드를 불러다가 사용한다. 

기존에는 인터프리팅 방식 때문에, 라인별로 인터프리팅이 되기때문에 중복된 소스에 대해서 다시 인터프리팅이되었다.

 

두가지 방식이 있다.

IBM, Sun에서 사용하는 두가지 방식이 있고,

IBM은 소스코드 전체를 미리 확인한다. 그리고 중복을 미리 체크해둔다. 해당 체크된 부분을 만난다면, 캐싱되어있는 결과를 가져와서 실행한다.

Sun에서 사용하는 Hotspot방식은, 소스코드 상 성능저하를 일으킬만한 부분을 찾고, 튜닝을 시킨뒤에 실행한다.

해당 튜닝 시간때문에 최초 실행시에는 오래걸리지만, 해당 시점 이후 부터는 튜닝된 결과를 이용해서 실행되기때문에 빠르다.

반응형

'Language > [Java]' 카테고리의 다른 글

[Java] 싱글톤 패턴  (0) 2022.03.15
[Java] 추상클래스 인터페이스 차이  (0) 2022.03.15
[Java] Java 장단점  (0) 2022.03.15
[Java] OOP(객체 지향 프로그래밍) 관련 공부  (0) 2022.03.14
[Java] HttpSession에 대한 이해  (0) 2022.02.21