Выход JIT может отличаться для каждого прогона - он может оптимизироваться для текущей схемы загрузки.Это иногда позволяет оптимизировать его более агрессивно, чем это было бы возможно для предварительно скомпилированного кода, который необходимо повторно использовать.
Если шаблон загрузки изменяется и оптимизация оказывается неоптимальной или даже неблагоприятной,JIT может де-оптимизировать и, возможно, попробовать другую оптимизацию
(см. также О динамической де-оптимизации HotSpot )
Теперь это может иногда снижать производительностьчтобы сохранить результаты различных скомпилированных версий и использовать их позже, но это также потребовало бы значительного объема бухгалтерского учета, чтобы выяснить, был ли раздел кода уже скомпилирован с актуальными на данный момент оптимизациями.
Полагаю, это просто не считается оправданным усилием.Это компромисс между выполнением файлового ввода-вывода и обычно быстрой компиляцией небольших участков кода.