Прогрев — построение абстрактной модел исполнения конкретного кода на основе статистики его исплнения. Наверное как-то так должно звучать определение.
@olegchir я прав?
две фазы: сначала отрабатывает специализацию и прочие свои оптимизации трюфельный интерпретатор, потом то что получилось отправляется на компиляцию джитом. Насколько в этом учитывается статистика - зависит от афторов конкреного компилятора. Условно говоря, если в методе мало байткодов, его имеет смысл вообще сразу специализировать и AOT-компилировать, а если там дофига всего - то отдать джиту. Плюс у каждой оптимизации есть свой вес, и в джите имеет смысл применить только то, что влезет в отведенное время. В общем случае (для произвольной архитектуры и компилятора) - оптимизация зависит от деталей реализации компилятора, а при нарушении инвариантов - полный откат до интерпретатьора