인프런 커뮤니티 질문&답변

anthologia님의 프로필 이미지
anthologia

작성한 질문수

더 자바, 코드를 조작하는 다양한 방법

JVM 구조

JIT 컴파일러와 인터프리터

작성

·

845

1

안녕하세요, 백기선님.

기존에 저는 JVM 내에서 JIT이 컴파일러와 인터프리터의 역할을 동시에 수행한다고 이해하고 있었는데요.

자료(p.4)에서는 [실행엔진 : 인터프리터, JIT Compiler, GC ] 로 구성되어 있어서 질문드립니다.

  1. 인터프리터와 JIT 컴파일러는 서로 분리되어 역할을 수행하는 것이 맞고,

  2. 바이트 코드를 실행할 때, JIT 컴파일러가 전체를 싹 훑고, 반복되는 코드에 대해 메모리에 캐싱을 진행한 후, 인터프리터가 처음부터 순차적으로 읽어 나가다가, 반복되는 해당 지점에서 JIT Compiler가 다시 개입하여 캐싱된 코드를 꺼내오는 형태일까요? 이 부분이 조금 헷갈리기도 하고, 궁금하기도 합니다.

혹은 어떤 문서를 보면 공부해볼 수 있을까요?

(한국어 블로그에는 대부분 인터프리터와 JIT이 같다고 적어둔 경향이 많은 것 같고, 기선님께서 참고에 올려주신 글이나 해외 블로그에서는 둘을 분리해서 말하는 경향이 있는 것 같아서 더 헷갈리는 것 같습니다.)

감사합니다!

* 아래 질문과 비슷한 내용이지만, 답변 달아주신 링크에 접속이 안되서 부득이하게 다시 질문 드립니다ㅠ

https://www.inflearn.com/questions/99765

답변 1

3

백기선님의 프로필 이미지
백기선
지식공유자

https://docs.oracle.com/javacomponents/jrockit-hotspot/migration-guide/comp-opt.htm#JRHMG117

Unlike Oracle JRockit, HotSpot features a Java byte code interpreter in addition to two different JIT compilers - client (aka C1) and server (aka C2)).

그 둘이 같은거라면.. 오라클 공식 문서에 이렇게 적었을리가 없겠죠.

 

anthologia님의 프로필 이미지
anthologia
질문자

감사합니다!

anthologia님의 프로필 이미지
anthologia

작성한 질문수

질문하기