When I measure the throughput of my Java application, I see a 50% performance increase over time:
- For the first 100K messages, I get ~3,000 messages per second
- For the second 100K messages, I get ~4,500 messages per second.
I believe the performance improves as JIT optimizes the execution path.
The reason given for not saving the JIT compilation is that "the optimizations that the JVM performs are not static, but rather dynamic, based on the data patterns as well as code patterns. It's likely that these data patterns will change during the application's lifetime, rendering the cached optimisations less than optimal."
However, I know for a fact that these data patterns won't change during my application's lifetime, or even over multiple application lifetimes. So how can I "save" these performance gains in the HotSpot JVM?
See also, the relevant question and discussion.