JVM Tuning kann die Leistung dramatisch verbessern. Ein praktisches Cheat Sheet.
Speicher¶
-Xms4g -Xmx4g -XX:MaxMetaspaceSize=512m
Garbage Collectors¶
-XX:+UseG1GC -XX:+UseZGC # Java 17+ -XX:+UseShenandoahGC
GC Logging¶
-Xlog:gc*:file=gc.log:time,uptime
JFR¶
jcmd
Diagnose¶
jstack
Container¶
-XX:MaxRAMPercentage=75.0
Regeln¶
- Heap = 50-75% RAM
- Xms = Xmx
- G1GC für die meisten Workloads
- ZGC für Ultra-Low Latency
Wahl des Garbage Collectors¶
G1GC ist der Standard-GC seit Java 9 und eine gute Wahl fuer die meisten Anwendungen. Er teilt den Heap in Regionen und sammelt zuerst die Regionen mit dem meisten Garbage. ZGC (Java 17+) bietet ultrageringe Latenz mit GC-Pausen unter 1ms, ideal fuer Echtzeitsysteme und latenzsensitive Microservices. Shenandoah GC bietet aehnliche Eigenschaften wie ZGC und ist in OpenJDK verfuegbar.
Java Flight Recorder (JFR) ist ein Produktionsprofiler mit minimalem Overhead (typisch unter 1%). Er zeichnet CPU-Samples, Allokationen, GC-Events, I/O und Thread-Aktivitaet auf. Die Kombination von JFR mit JDK Mission Control liefert detaillierte Leistungsanalysen, ohne das Problem reproduzieren zu muessen. Fuer containerisierte Umgebungen setzen Sie immer -XX:MaxRAMPercentage statt fester -Xmx-Werte, damit sich die JVM korrekt an Container-Memory-Limits anpasst.
Tipp¶
Messen Sie immer vor und nach Änderungen. JFR ist das beste Werkzeug für Java Performance-Analyse.