Что такое компилятор Just-In-Time (JIT) в Java?

Компилятор Just-In-Time (JIT) является компонентом JRE (Java Runtime Environment), который повышает производительность приложений Java во время выполнения. Это помогает повысить производительность Java-программ путем компиляции байт-кодов в собственный машинный код во время выполнения.

Как работает компилятор JIT

На практике методы не компилируются при первом вызове. Для каждого метода виртуальная машина Java поддерживает счетчик вызовов, который увеличивается каждый раз при вызове метода. JVM интерпретирует метод, пока его счетчик вызовов не превысит порог компиляции Just-In-Time. Поэтому часто используемые методы компилируются вскоре после запуска виртуальной машины Java, а менее используемые методы скомпилируются намного позже или вообще не выполняются. Порог компиляции Just-In-Time помогает быстрому запуску JVM и по-прежнему имеет улучшенную производительность. Порог был тщательно выбран для обеспечения оптимального баланса между временем запуска и долгосрочной эксплуатацией.

Преимущества компилятора Just-In-Time (JIT)

Усовершенствования в технологии компилятора могут повлиять на существующие программы. Напр. Лучший компилятор «C» не поможет вам уже с уже развернутыми ранее программами. Лучший JIT-компилятор улучшит производительность существующих программ. Итак, код Java, который вы написали годы назад, будет работать быстрее сегодня.

Нативные изображения загружаются быстрее, потому что они не имеют много начальных действий и требуют статического количества меньше памяти

Недостатки компилятора Just-In-Time (JIT)

Компилятор Just-In-Time (JIT) повышает уровень непредсказуемости и сложности в Java-программе. Он добавляет еще один уровень, который программисты не понимают и не контролируют.

JIT-компиляторы имеют намного больше накладных расходов на память, поскольку им необходимо загрузить компилятор и интерпретатор в дополнение к библиотекам времени выполнения и скомпилированному коду, который требуется для выполнения компилируемой программы, выполняемой заранее.

Большие приложения обычно выигрывают от компиляции времени ожидания (AOT), а мелкие - вообще нет.

Источник: http://net-informations.com/Java/cJava/jit.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector