Verwandte Frage: Garbage collector usage when upgrade from Java 6 + Tomcat 6 to Java 8 + Tomcat 8Speicherzuordnung Verhalten mit Java 1.8 in Tomcat 6 und Tomcat 8
ich eine Reihe von Webapps haben, kompiliert mit Java 8. Wenn ich sie in Tomcat laufen 8, erhalte ich eine Menge kleinere GC Sammlungen mit einer zufälligen Speicherzuordnung. In Tomcat 6 ist die Speicherzuweisung linearer und stabiler (Leerlauf in beiden Fällen, kein Verkehr).
Eden Raum Tomcat 8:
Eden Raum Tomcat 6:
Wissen Sie, warum das passiert?
EDIT 1:
Dies sind die Daten aus der Produktionsumgebung mit jdk 1.8 und Tomcat 8. CPU fast wirklich hoch ist immer auf GC-Zyklen. Irgendwelche Kommentare dazu?
EDIT 2:
Dies ist ein heapdump analisis (1,8 GB Dump):
Mit mehr GC-Anrufe verwenden Sie weniger CPU. –
@GilianJoosen jeder GC-Zyklus erfordert CPU (siehe CPU-Image), ein Speicherleck könnte eine kontinuierliche Speicherbereinigung mit einer 100% CPU-Zeit und einem unbrauchbaren Server führen. –
Mit 2 Hauptversionen zwischen Tomcat 6 und Tomcat 8 wäre die Antwort etwas wie "weil sie Dinge verändert haben". Was passiert, wenn Sie Verkehr haben und Tomcat nicht nur im Leerlauf sitzt (da ist es wirklich wichtig). Geht dir der Speicher aus? Verschlechtert sich Ihre Leistung mit Tomcat 8? – Kayaman