<story><title>ZGC – What&apos;s new in JDK 16</title><url>https://malloc.se/blog/zgc-jdk16</url></story><parent_chain></parent_chain><comment><author>modeless</author><text>1 ms pause times are pretty good. That&amp;#x27;s finally getting close to the point where it may no longer be the biggest factor preventing adoption in applications like core game engine code. Although at 144 Hz it&amp;#x27;s still 14% of your frame time, so it&amp;#x27;s hardly negligible.&lt;p&gt;Even if the GC is running on an otherwise idle core there are still other costs like power consumption and memory bandwidth. So you still want to minimize allocation to keep the GC workload down.&lt;p&gt;For too long GC people were touting 10 ms pause times as &amp;quot;low&amp;quot; and not bothering to go further, but truly low pause times &lt;i&gt;are&lt;/i&gt; possible. I&amp;#x27;d love to see a new systems language that &lt;i&gt;starts&lt;/i&gt; by designing for extremely low-pause GC, not manual allocation or a borrow checker. I think it would be possible to make something that you could use for real time work without having to compromise on memory safety and without having to pay the complexity tax Rust takes on for the borrow checker.</text></comment>
<story><title>ZGC – What&apos;s new in JDK 16</title><url>https://malloc.se/blog/zgc-jdk16</url></story><parent_chain></parent_chain><comment><author>vlovich123</author><text>One of the observations I&amp;#x27;ve been making is that strategies like this of spreading the work around multiple threads almost seem to play with measurements more than necessarily improving the cost. So yes, the &amp;quot;stop the world phase&amp;quot; is shorter &amp;amp; cheaper. It&amp;#x27;s unclear the rest of the threads have more implicit overhead to support this concurrency (more book-keeping, participating implicitly in GC, etc). Supporting benchmarks of various workloads would be helpful to understand what tradeoffs were made.</text></comment>