256. Tuning garbage collectors
Garbage collectors are complex machinery whose performances are highly related to their settings (startup parameters) in the context of the current JVM, current application, and hardware. Since the GC consumes and shares resources (memory, CPU time, and so on) with our application, it is essential to tune it to work as efficiently as possible. If the GC is not efficient, then we may face significant pause times that will negatively impact the application run.
In this problem, we will cover the main tuning options available for the serial GC, parallel GC, G1 GC, and ZGC.
How to tune
Before attempting to tune the GC, ensure that it is really causing trouble. By inspecting and correlating the charts and logs, you can identify such troubles and decide where you should act (what parameters should be tuned). Check out the usage of the heap memory and how objects fill up the Eden, Survivor, and Tenured spaces.
Typically, a healthy GC produces...