2016-06-16 1 views
0

필자의 이해에 따르면 Java 인터프리터만으로는 바이트 코드를 한 줄씩 실행하기 시작하면 성능이 느려지므로 JIT는 코드 실행 속도를 높이기 위해 코드 최적화를위한 그림을 제공합니다.JIT 및 JAVA 인터프리터는 손으로 직접 작업을 수행합니까, 아니면 JIT가 먼저 완료합니까?

JIT 컴파일러는 코드를 최적화하고 java 인터프리터는 최적화 된 코드를 라인별로 변환합니다. JIT는 런타임에만 실행되므로 바이너리 출력을 얻지 못합니다. 인터프리터가 해석하면 바이너리 코드가 생성됩니다.

--- 이제 제 질문은 JIT와 JAVA 인터프리터가 함께 작동합니까? 또는 jit 컴파일러가 처음 작동하고 java 인터프리터가 작동하기 시작합니까?

확인해주세요.

+0

Java 바이트 코드에는 행이 없으므로 인터프리터는 "행별로"실행하지 않고 명령별로 실행합니다. 더구나, "통역사 번역"에 대한 귀하의 생각은 이상합니다. 질문의 시작 부분에 당신이 옳았습니다. 통역사는 번역하지 않지만 * 실행합니다 *. 질문의 중간에 JIT 컴파일러의 작업을하는 통역사의 개념으로 갑자기 왜 바뀌 었는지는 분명하지 않습니다. – Holger

+0

나는 초보자입니다. 대답 해 주셔서 대단히 감사합니다. 그것은 대단히 도움이 explainationI입니다. 나는 구글 검색을 통해 공부하고 내가 '통역사 번역'이라는 용어를 찾은 곳을 많이 알지 못한다. ... 실행하지만 번역을 고쳐 주셔서 감사합니다. – nazneen

+0

기본적으로 둘 다 서로 다른 작업을 수행하며 동일한 원본 데이터에서 작업합니다. 인터프리터는 바이트 코드를 직접 실행하지만 JIT 컴파일러는이를 나중에 실행하기 위해 원시 코드로 변환합니다 (용어 JIT 컴파일러는 원래이 번역 작업 만 가리키고 있지만 오늘날은 최적화 및 번역이 일반적으로 분리 할 수없는 작업으로 간주됩니다). 서로 다른 일을하는 동안 어떤 종류의 상호 작용이 있습니다. 인터프리터가 JIT 컴파일러에 의해 생성 된 네이티브 코드로 전환하는 작업을 중단하고 네이티브 코드가 다시 전환되는 방식을 정의하는 프로토콜이 있어야합니다. – Holger

답변

0

Java 런타임이 시작되면 인터프리터를 사용하여 바이트 코드가 실행됩니다. 메서드가 반복적으로 호출되면 더 빠른 버전으로 컴파일됩니다. 그들이 더 많이 부름을 받으면 더 빨리 컴파일 될 것입니다.

0

java가 프로그램을 실행하면 바이트 코드를 해석하여 실행합니다. 특정 코드 비트가 매우 자주 실행되는 것을 감지하면 JIT 컴파일러가 실행되고 바이트 코드는 코드가 실행되는 플랫폼 (즉, 머신 코드)에 상관없이 플랫폼 특정 코드로 컴파일됩니다.

JIT 컴파일러로 컴파일 된 코드의 경우 컴파일 된 코드가 바이트 코드 대신 직접 사용되므로 해석이 필요하지 않습니다 (빠른 이유).

JIT 컴파일을 수행 할 때 성능이 1 회 발생하므로 Java는 자주 실행되는 코드에서만 성능상의 이점을 제공합니다.

관련 문제