본문 바로가기

JAVA

[JAVA] JIT 컴파일러란??

728x90

배경

  • JAVA의 원시코드(.java)를 자바 컴파일러를 통해 바이트코드로 변경
  • 변경된 코드를 JVM에서 자바 인터프리터로 기계어로 변경
  • 하지만 인터프리터는 너무 느림
  • JIT(JUST IN TIME) 컴파일러를 추가해 성능 개선

컴파일러 V.S. 인터프리터

  • 컴파일러
    • 소스 코드 전체를 한번에 기계어로 변경
    • C,C++
  • 인터프리터
    • 각 행마다 실행
    • 에러가 나면 에러가 난 행에서 멈춤
    • 행마다 실행하기 때문에 실행속도가 컴파일러에 비해 느림
    • 파이썬

JIT 컴파일러

  • 실행시점에 기계어 코드 생성
  • 단, 컴파일 대상만 컴파일 실행, 해당 코드 캐싱
    • 컴파일 대상인 메소드는 큐에서 대기, 이후 스레드에 의해 컴파일 됨
  • 기계어로 변환된 코드는 캐시(저장소)에 저장되어 재사용시 컴파일을 다시 할 필요 없음

 

728x90

'JAVA' 카테고리의 다른 글

가비지 컬렉션(Garbage Collection) 동작원리  (1) 2024.02.01
JVM의 구조  (0) 2024.01.27
JVM (Java Virtual Machine)  (0) 2024.01.25
Thread  (2) 2024.01.24
합성  (0) 2024.01.20