JIT stops compiling after a while (java 7)
vladimir.kozlov at oracle.com
Thu Aug 15 09:14:23 PDT 2013
On 8/14/13 11:24 PM, Martin Traverso wrote:
> We have several bugs opened and we are working on them.
> Is there a bug report you could point me to?
Next one describes problem may be similar to yours but unfortunately it is confidential because it talks about internal
8020151: Large performance regressions when code cache is filled
"When the code cache fills up, performance becomes severely hampered. We've observed two scenarios: one where the
performance drops by about 4x and remains steady, and one where the performance drops nearly 100% for a few minutes,
gets to an 80% regression for a few minutes, eventually recovers all performance for a few minutes, and then repeats
> You can try to play with next 2 flags to see if it helps:
> product(intx, MinCodeCacheFlushingInterval, 30,
> "Min number of seconds between code cache cleaning sessions")
> product(uintx, CodeCacheFlushingMinimumFreeSp__ace, 1500*K,
> "When less than X space left, start code cache cleaning")
> Tweaking these didn't seem to help.
> If you can build fastdebug VM you can run it with -XX:+PrintMethodFlushing to see what happened.
> Here's a sample trace with PrintCompilation, PrintGCDetails and PrintMethodFlushing:
> I can see GC events, and a bunch of messages from the sweeper, but not a single "flushing nmethod".
> Here's another run with the variant that calls System.gc() every second. This one does show "flushing nmethod" messages:
> Do you have normal GC events (young gen collections) -XX:+PrintGCDetails? Methods usage marking and CodeCache
> sweeping initiation happen only during safepoints (usually when GC is needed) when all java threads are stopped.
> Yes, there are normal GC events throughout the entire execution.
More information about the hotspot-compiler-dev