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 |