Каждая новая реплика запускает то же приложение, но JIT снова с нуля ищет горячие методы, собирает профиль и компилирует код.

Казалось бы, пусть первая JVM сохранит результат, а остальные его заберут. Но машинный код JIT зависит от состояния конкретного процесса. От иерархии классов, загруженных реализаций и реального трафика.

Чтобы перенести один метод, нужно быстро проверить тысячи предположений. Причём даже полностью корректный код может оказаться медленным для другой реплики.

В статье разбираемся, почему поделиться результатами JIT гораздо сложнее, чем просто положить их в кеш.

Читать далее