• JDK 22 G1/Parallel/Serial GC changes

    Another JDK release, another version of a post in this series: this time JDK 22 GA is almost here and so I am going to entertain you with latest changes for the stop-the-world garbage collectors for OpenJDK for that release. ;)

  • What is... a Concurrent Undo Cycle

    Recently I got questions about what Concurrent Undo Cycle messages in the logs mean - in this post I would like to explain this optimization and what it means for your application.

  • JDK 21 G1/Parallel/Serial GC changes

    JDK 21 GA is on track - as well as this update for changes of the stop-the-world garbage collectors for OpenJDK for that release. ;)

  • JDK 20 G1/Parallel/Serial GC changes

    Yet another JDK release that is on track - JDK 20 GA is almost here. Another opportunity to summarize changes and improvements in Hotspot´s stop-the-world garbage collectors for the JDK 20 release.

  • The Case of Ljdk.vm.internal.FillerArray;

    While writing the JDK 19 update blog post I strongly considered writing about the “new” (jdk.vm.internal.FillerObject and jdk.vm.internal.FillerArray) objects that may appear in heap dumps. I thought they were not that interesting, but it looks like people quickly noticed them. This post describes their purpose after all.

  • JDK 19 G1/Parallel/Serial GC changes

    JDK 19 GA is almost here. Let me summarize changes and in particular improvements in Hotspot´s stop-the-world garbage collectors in that release - G1 and Parallel GC - for yet another time. :)

  • Concurrent Marking in G1

    The recent change JDK-8210708 fundamentally changed how G1 uses mark bitmaps to store liveness information: instead of recording this information using two bitmaps spanning the heap that G1 uses alternatingly, there is now only one bitmap. This not only changes how G1 uses the bitmap in many places in the garbage collector, but also reduces G1 garbage collector native memory consumption by a large amount, to be exact by 1.5% of Java heap size. I thought this would be a great time to explain how the current concurrent marking cycle works and how G1 uses the bitmap in detail.

  • JDK 18 G1/Parallel/Serial GC changes

    Time flew by and JDK 18 GA is around the corner. Let me summarize changes and in particular improvements in Hotspot´s stop-the-world garbage collectors in that release - G1 and Parallel GC - for another time. :)

  • Card Table Card Size Shenanigans

    JDK 18 introduces configurable card table card sizes with JDK-8272773. This post tries to show you what the card table is, and why you might want to play around with this new option.

  • Heap Regions X-Large

    Until now G1 heap region size has been limited to 32MB due to previous limitations in the remembered set data structures. With JDK-8275056 JDK 18 will bump that limit to 512MB. Read on about how this works, how you can use it and a brief discussion about the possible impact of this change for you.

  • JDK 17 G1/Parallel GC changes

    A few days ago JDK 17 went GA. For this reason it is time for another post that attempts to summarize most significant changes in Hotspot´s stop-the-world garbage collectors in that release - G1 and Parallel GC.

  • Evacuation Failure and Object Pinning

    At the end of the post about JDK 16 improvements to the Hotspot VM I mentioned that it added preparations for object pinning. I would like to elaborate on that a bit more as I got some questions about it, particularly talking about the problems, potential solutions and where to start working.

  • JDK 16 G1/Parallel GC changes

    This post recaps the most significant changes in JDK 16 Hotspot´s stop-the-world garbage collectors - G1 and Parallel GC.

  • Welcome 20% less memory usage for G1 remembered sets - Prune collection set candidates early

    For a long time remembered sets have been an issue with the G1 garbage collector. Recently there has been an interesting, small change [7] with quite a positive impact in this area that I would like to highlight a bit.

  • JDK 15 G1/Parallel GC changes

    JDK 15 just moved into the release candidate phase and I thought it is a good time for another entry in my recaps of significant changes in the OpenJDK stop-the-world garbage collectors G1 and Parallel GC - this time in blog format.