It's amazing to see that ZGC (JEP 377) and Shenandoah (JEP 379) are going to become non-experimental in 15! However, we've been successfully using ZGC for our gateway components since when JDK 13 was released. 1/n https://twitter.com/OpenJDK/status/1246209511330738176
After running an experiment, and switching the fleet of our gateway components to ZGC, we saw the GC pauses went down from 30-60ms down to less than 2ms. Here's some data from one of the instances I looked up right now. 2/n
Not only this reduced latency for the requests affected by GC, but also eliminated some unfortunate side-effects, e.g. jumps in the request queue size which would cause spinning up more threads than necessary 3/n
We also tried Shenandoah, and even though the GC pauses were slightly larger than ZGC for our service, only by a few ms, its memory overhead was smaller. So, will definitely consider going with Shenandoah with some of our more memory-constraint services. 4/n
The new GCs didn't work out for some other services with heavy-allocation background jobs. But some of our services are experimenting with new GCs too and seeing similar improvements. GC pauses down from 100-200 ms in the worst case to a few ms only. 5/n
The results may vary depending on your workload but give ZGC and Shenandoah a try. Ideally, today, right now, just go for it! 🚀6/n
You can follow @SerCeMan.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: