OpenJ9's garbage collection performance may be due to IBM's investment in real-time garbage collection through the Metronome project, of which they've published several papers on the matter. They tout that the maximum GC time for any workload should be 250ms in the absolute worst case, and it seems to hit best case very easily for Minecraft (and likely other apps using many short-lived objects)