JVM 은 이식성을 위해 java specific instruction 을 생성하고 JVM 에서 line by line 으로 해석한다.
하지만 이런 방식은 c 같은 언어에 비해 매우 느릴 수 밖에 없다.
c 는 모든 코드를 기계어로 한번에 번역하여 실행하는 반면
java 는 동일한 함수가 여러번 호출되는 경우에, 해당 함수를 번역하고 실행하는 작업이 반복되기 때문이다.
그러한 코드를 hot code 라고 하고, 잘 호출되지 않는 코드를 cold 코드라고 한다.
그래서 JIT 컴파일러를 도입하여, hot code 는 machine specific 한 기계어로 번역을 하고 캐시하는 것이다.
이런 방식으로 인터프리터 방식의 단점을 보완한다.
'Java > Java 파헤치기' 카테고리의 다른 글
Java 한글 인코딩 안될때 jdk 버전 확인해야함. (1) | 2022.05.06 |
---|---|
Spring MSA 를 간단하게 구현해보자 (+ 최신 release, 모니터링, heapdump) (0) | 2022.05.05 |
JavaThread 에 대해 깊게 이해해보자 (feat. Openjdk 커널 분석) (2) | 2022.04.30 |
[JVM] 레퍼런스 (0) | 2022.04.24 |