Когда я измеряю пропускную способность моего приложения Java, я вижу увеличение производительности на 50% с течением времени:
- Для первых сообщений 100K я получаю ~ 3000 сообщений в секунду
- Для вторых сообщений 100K я получаю ~ 4,500 сообщений в секунду.
Я считаю, что производительность улучшается, так как JIT оптимизирует путь выполнения.
Причина, по которой не сохраняется компиляция JIT, заключается в том, что "оптимизация, выполняемая JVM, не является статической, а скорее динамической, на основе шаблонов данных, а также шаблонов кода. Вероятно, эти шаблоны данных будут меняться во время срок службы приложения, делая оптимизацию кэширования менее оптимальной".
Тем не менее, я знаю, что эти шаблоны данных не будут меняться во время моего жизненного цикла приложения или даже в течение нескольких жизненных циклов приложений. Итак, как я могу "сохранить" эти приросты производительности в JVM HotSpot?
См. также question и обсуждение.