JIT(Just-In-Time) 컴파일러

kims·2023년 11월 16일
0

자바

목록 보기
1/5

1. 컴파일러 정의

특정 프로그램밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램
출처👉위키백과

1) 자바 컴파일러

  • 자바 소스 코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환

💡 javap 명령어

  • 클래스 파일을 역어셈블(Disassemble)하는 명령어
  • -c : 클래스 파일의 바이트 코드를 보여준다.

2. 컴파일러 동작 방식

  • 전체 소스 코드 파일을 가져와 사용되지 않는 코드나 중복된 코드 등을 분석 후 최적화 한다.
  • 코드가 수정되면 컴파일을 다시 해야하는 단점이 있다.

3. JIT 컴파일러 정의

  • 프로그램을 실행하는 동안 실시간으로 기계어로 번역하는 컴파일러
    Just-In-Time이라 불리는 이유는 실행 시점에 코드를 컴파일하고 최적화하기 때문이다.

4. Java에서 JIT 컴파일러 동작 방식

JIT Compiler출처👉JIT Java|Just In Time (JIT) Compiler

Execution Engine출처👉Execution Engine

  • Execution Engine이 동작하며 Java 바이트 코드를 실행하면,
    JIT CompilerProfiler가 실행 중인 애플리케이션의 hot spot(자주 사용되는 코드)을 식별하고, 특정 메서드에 대한 호출 횟수 등을 카운트하여 알리면 이를 최적화하여 Native Code로 변환한다.
    또한, 일부 코드 블럭이 많이 호출되면 이를 code cache로 옮겨 빠르게 액세스할 수 있도록 한다.
  • JVM은 인터프리터와 JIT 컴파일러를 함께 사용한다.

1) 인터프리터 정의

프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
출처👉위키백과

2) 인터프리터 동작 방식

  • 한 번에 한 줄씩, 소스 코드 파일에서 라인을 읽고 프로세서가 실행할 수 있도록 전송하고, 그다음 라인을 읽고 전송하는 동작을 반복한다.
  • 코드가 길어질수록 속도가 느려지는 단점이 있다.

🤔 코틀린과 자바가 100% 호환되는 이유

  • 코틀린과 자바는 JVM에서 실행되며, 코틀린 또한 컴파일러를 통해 자바 바이트 코드로 변환된다.

💡참고

profile
기술로 세상을 이롭게

0개의 댓글