250. Tackling G1 throughput improvements
G1 has made major progress from JDK 8 to JDK 20. Some of these improvements have been reflected in throughput. Of course, this throughput improvement is dependent on a lot of factors (application, machine, tuning, and so on) but you may expect at least 10% higher throughput in JDK 18/20 than in JDK 8.
In order to increase throughput, G1 has passed through several changes, as follows.
Delaying the start of the Old generation
Starting with JDK 9, G1 is heavily focused on collecting garbage from the Young generation while delaying the start (initialization, resource allocation, and so on) of the Old generation to the last moment (it anticipates when the Old generation should be started).
Focusing on easy pickings
By easy pickings, we mean objects that are short-lived (for instance, temporary buffers), occupy a significant amount of heap, and can be collected easily at low cost with important benefits. Starting with JDK 9, G1...