수색…


비고

역사

Symantec JIT 컴파일러는 Sun Java에서 1.1.5 이상부터 사용할 수 있었지만 문제가있었습니다.

Hotspot JIT 컴파일러는 1.2.2에서 Sun Java에 플러그인으로 추가되었습니다. Java 1.3에서 JIT는 기본적으로 활성화되었습니다.

(출처 : 자바가 언제 JIT 컴파일러를 얻었습니까?

개요

여기에 이미지 설명을 입력하십시오.

Just-In-Time (JIT) 컴파일러는 런타임시 Java 응용 프로그램의 성능을 향상시키는 Java ™ Runtime Environment의 구성 요소입니다.

  • Java 프로그램은 클래스로 구성되어 있으며 여러 가지 컴퓨터 아키텍처의 JVM에서 해석 할 수있는 플랫폼 중립 바이트 코드를 포함합니다.
  • 런타임에 JVM은 클래스 파일을로드하고 각 개별 바이트 코드의 의미를 결정하며 적절한 계산을 수행합니다.

해석 중에 추가 프로세서 및 메모리 사용은 Java 응용 프로그램이 원시 응용 프로그램보다 느리게 수행됨을 의미합니다.

JIT 컴파일러는 런타임에 바이트 코드를 원시 시스템 코드로 컴파일하여 Java 프로그램의 성능을 향상시킵니다.

JIT 컴파일러는 기본적으로 사용 가능하며 Java 메소드가 호출 될 때 활성화됩니다. JIT 컴파일러는 해당 메소드의 바이트 코드를 원시 기계 코드로 컴파일하여 "just in time" 컴파일하여 실행합니다.

메소드가 컴파일되면 JVM은 해석하지 않고 직접 컴파일 메소드를 호출합니다. 이론적으로 컴파일이 프로세서 시간과 메모리 사용을 필요로하지 않는다면 모든 방법을 컴파일하면 Java 프로그램의 속도가 원시 응용 프로그램의 속도에 가까워 질 수 있습니다.

JIT 컴파일에는 프로세서 시간과 메모리 사용이 필요합니다. JVM이 처음 시작되면 수천 가지 메소드가 호출됩니다. 이러한 모든 방법을 컴파일하면 결국 프로그램이 매우 우수한 최대 성능을 달성하더라도 시작 시간에 큰 영향을 줄 수 있습니다.


  • 실제로 메서드는 처음 호출 될 때 컴파일되지 않습니다. 각 메소드에 대해 JVM은 메소드가 호출 될 때마다 증가되는 call count 를 유지 보수합니다.
  • JVM은 호출 수가 JIT 컴파일 임계 값을 초과 할 때까지 메소드를 해석합니다.
  • 따라서 자주 사용되는 메소드는 JVM이 시작된 직후에 컴파일되며 사용되지 않는 메소드는 훨씬 나중에 컴파일되거나 전혀 컴파일되지 않습니다.
  • JIT 컴파일 임계 값을 사용하면 JVM을 신속하게 시작하고 성능을 향상시킬 수 있습니다.
  • 시작 시간과 장기 성능 간의 최적의 균형을 얻기 위해 임계 값을 신중하게 선택했습니다.
  • 메소드가 컴파일 된 후에는 호출 수가 0으로 재설정되고 메소드에 대한 후속 호출은 계속해서 카운트를 증가시킵니다.
  • 메소드의 호출 수가 JIT 재 컴파일 임계 값에 도달하면 JIT 컴파일러는 이전 컴파일에서보다 더 많은 최적화 선택을 적용하여 두 번째 컴파일합니다.
  • 이 프로세스는 최대 최적화 수준에 도달 할 때까지 반복됩니다.

Java 프로그램의 가장 바쁜 메소드는 항상 가장 적극적으로 최적화되어 JIT 컴파일러의 성능 이점을 극대화합니다.

또한 JIT 컴파일러는 operational data at run time 측정하고 해당 데이터를 사용하여 추가 재 컴파일의 품질을 향상시킬 수 있습니다.

JIT 컴파일러는 사용 불가능하게 할 수 있으며,이 경우 전체 Java 프로그램이 해석됩니다. JIT 컴파일 문제를 진단하거나 해결하려면 JIT 컴파일러를 사용하지 않는 것이 좋습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow