openjdk.ruOpenJDK на русском

JEP 317: Experimental Java-Based JIT Compiler

JIT-компилятор на Java в статусе Experimental (экспериментальная функция)

ОтветственныйIgor Veresov
ТипFeature
ОбластьJDK
СтатусClosed / Delivered
Выпуск10
Компонентhotspot / compiler
Обсуждениеhotspot dash compiler dash dev at openjdk dot java dot net
ТрудоёмкостьM
ДлительностьM
РецензентыJohn Rose, Mikael Vidstedt, Vladimir Kozlov
ОдобренVladimir Kozlov
Создан2017/10/20 20:03
Обновлён2018/03/28 01:58
Задача8189751

Аннотация

Разрешить использовать JIT-компилятор на Java, Graal, в качестве JIT-компилятора в статусе Experimental на платформе Linux/x64.

Что не является целью

Достичь или превзойти производительность существующих JIT-компиляторов не является целью.

Мотивация

Graal, JIT-компилятор на Java, лежит в основе компилятора Ahead-of-Time (заблаговременная компиляция и подготовка) (AOT) в статусе Experimental, который появился в JDK 9. Возможность использовать его как JIT-компилятор в статусе Experimental — одна из инициатив Project Metropolis и следующий шаг в изучении того, насколько реален JIT на Java для JDK.

Описание

Разрешить использовать Graal как JIT-компилятор в статусе Experimental, начиная с платформы Linux/x64. Graal будет использовать интерфейс компилятора JVM (JVMCI), появившийся в JDK 9. Graal уже входит в JDK, поэтому работа над его включением как JIT-компилятора в статусе Experimental будет в основном состоять из тестирования и отладки.

Чтобы включить Graal в качестве JIT-компилятора, используйте следующие параметры в командной строке java:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Тестирование

Для этой работы запланировано стандартное тестирование компиляторов. Оно включает запуск всех тестов HotSpot и JDK с различными наборами флагов на Linux/x64. Помимо этих стандартных тестов, будут запускаться модульные тесты, разработанные специально для Graal. Будет реализована поддержка запуска этих модульных тестов во фреймворке jtreg. В рамках этой работы будут проведены первоначальное тестирование производительности и бенчмаркинг.

Риски и допущения

Более медленный запуск и увеличенное потребление кучи Java у этого варианта в статусе Experimental могут повлиять на первоначальную оценку со стороны разработчиков и/или ограничить её. На некоторых приложениях и бенчмарках Graal будет уступать по производительности существующим JIT-компиляторам HotSpot.