2015-10-12 4 views
5

Каковы технические причины, по которым не удалось сохранить изображение JVM после его прогрева? Предполагая, что я хочу возобновить работу на одной платформе (так что любой материал JIT будет работать).Serialize HotSpot State

+0

Просьба представить ваши усилия. – manetsus

ответ

6

В зависимости от того, какой JVM вы используете, есть такая функциональность. JRockit - reported to be able, для «нормального» потребителя JRE a JEP 145 существовал, но, очевидно, этого не делал.

Есть несколько вопросов по этой теме уже здесь, на SO, попробуйте this one.

Для обычной СУБД Oracle такая функция не существует, вы можете играть с CodeCache, чтобы она скомпилировала функции в кратчайшие возможные сроки или "warm up" вашей JVM.

Сохраненный кеш JVM несет некоторые риски, как в случае со всеми кэшами. Состояние JIT необходимо будет аннулировать и пересчитать, когда ваш код изменится. Если этого не произойдет, вы запустите свою программу со старым кодом. Это, по-видимому, является основной причиной, по которой этот кеш-накопитель остается ограниченным «профессиональной» JVM. Также оптимизация JIT во время запуска считается достаточно быстрой, чтобы повторять ее при каждом запуске, тем самым устраняя риск работы с устаревшим кодом.