Java 10 - Erweiterte Garbage-Collection
JEP 304 - Garbage-Collector-Schnittstelle
Vor Java 10 waren GC (Garbage Collector)-Implementierungskomponenten in der Codebasis verstreut und konnten nicht einfach ersetzt werden. Mit Java 10 wird die Garbage-Collector-Schnittstelle eingeführt, sodass alternative GC-Implementierungen integriert werden können. Sie hilft auch bei der Isolierung der Codebasis von verschiedenen Garbage Collection-Implementierungen. Diese Funktion ist Teil von JEP 304.
JEP 307 - Parallele vollständige GC für G1
Java 9 führte den Garbage Collector G1 (Garbage First) ein. G1 vermeidet eine vollständige Garbage Collection, aber im Falle von gleichzeitigen Threads wird nach einer Sammlung gesucht und der Speicher wird nicht schnell genug wiederbelebt, was die Benutzererfahrung beeinträchtigt. Mit Java 10 verwendet G1 jetzt eine vollständige Garbage-Collection als Fallback.
Mit dieser Änderung verbessert G1 seine Worst-Case-Latenz durch die parallele Verwendung eines vollständigen GC. Derzeit verwendet G1 einen Single-Thread-Mark-Sweep-Compact-Algorithmus. Mit JEP 307 startet ein paralleler Thread den Mark-Sweep-Compact-Algorithmus. Die Anzahl der Threads kann mit der folgenden Option gesteuert werden.
$java -XX:ParallelGCThreads=4
Java