JIT 컴파일러에 대해 자주 질문되는 내용
JIT 컴파일러 사용 안함 설정, 대체 JIT 컴파일러 사용, JIT 컴파일 제어 및 JIT 컴파일러의 동적 제어와 같은 주제에 대한 답변이 제공됩니다.
- JIT 컴파일러를 사용 안함으로 설정할 수 있습니까?
- 예. JIT 컴파일러는 기본적으로 활성화되지만 적절한 명령행 매개변수를 사용하여 비활성화할 수 있습니다. 자세한 정보는 JIT 또는 AOT 컴파일러 사용 안함을 참조하십시오.
- 다른 벤더의 JIT 컴파일러를 사용할 수 있습니까?
- 아니오.
- 모든 버전의 JIT 컴파일러를 JVM과 함께 사용할 수 있습니까?
- 아니오. 그 둘은 단단하게 결합되어 있습니다. 사용하는 JVM 패키지와 함께 제공되는 JIT 컴파일러 버전을 사용해야 합니다.
- JIT 컴파일러가 메소드를 디컴파일할 수 있습니까?
- 일반적으로 JIT 컴파일러는 메소드를 디컴파일하지 않습니다. 그러나 드문 경우에 JIT가 메소드를 디컴파일하도록 강제 실행됩니다. JIT 컴파일러가 컴파일 시간 가정을 기반으로 추측성 최적화를 적용하고 나중에 가정이 위반된 다음 JIT 컴파일러가 메소드를 다시 컴파일할 수 없을 때 이러한 경우가 발생합니다. 구현 제한사항으로 인해 애플리케이션 종료까지 이러한 메소드가 해석된 상태로 남아 있습니다.
- JIT 컴파일러를 동적으로 제어할 수 있습니까?
- 아니오. JIT 컴파일러가 JVM과 동시에 시작되기 때문에 JIT 컴파일러에 옵션을 전달하여 동작을 수정할 수 있지만 JVM 시작 시간에만 수정할 수 있습니다. 그러나 Java™ 프로그램은 java.lang.Compiler API를 사용하여 런타임 시 JIT 컴파일러를 사용 및 사용 안함으로 설정할 수 있습니다.
- 코드 캐시에서 이용하는 메모리의 양은 얼마입니까?
- JIT 컴파일러는 지능적으로 메모리를 사용합니다. 코드 캐시가 초기화될 때는 비교적 적은 메모리를 사용합니다. 더 많은 메소드가 원시 코드로 컴파일되면 프로그램의 요구사항에 맞게 코드 캐시가 동적으로 증가합니다. 이전에 버려지거나 다시 컴파일된 메소드에서 사용된 공간이 재확보되어 재사용됩니다. 코드 캐시의 크기가 사전 정의된 최대 한계에 도달하면 더 이상 증가하지 않습니다. 그러면 JIT 컴파일러가 메소드 컴파일을 중지하여 시스템 메모리가 소모되지
않고 애플리케이션 또는 운영 체제의 안정성에 영향을 미치지 않도록 합니다.
z/OS® V2R3부터 64비트애플리케이션 (RMODE64) 의 상주 모드는 기본적으로 사용으로 설정되어 있습니다. 이 기능을 사용하면 JIT에서 2GB 메모리 막대 위에 코드 캐시를 할당할 수 있습니다. 명령행에서 -Xjit:disableRMODE64 하위 옵션을 지정하여 이 JIT 동작을 사용 안함으로 설정할 수 있습니다.