In questa lezione analizziamo come funziona il garbage collector (
GC) nella
JVM, in cosa differiscono i classici
Serial/
Parallel/
CMS dai moderni
G1,
ZGC e
Shenandoah, cosa sono la giovane e la vecchia generazione, perché si verificano le pause
Stop-the-World e come minimizzarle. In pratica vedremo come abilitare diversi GC con i flag (
-XX:+UseG1GC,
-XX:+UseZGC,
-XX:+UseShenandoahGC), configurare le pause (
-XX:MaxGCPauseMillis) e le dimensioni dell’heap (
-Xms/
-Xmx), leggere i log (
-Xlog:gc*) ed evitare errori tipici (ad esempio, l’invocazione forzata di
System.gc()).