Ich führe gerade eine Anwendung aus, die eine maximale Heap-Größe von 16 GB erfordert.Lange GC-Pausen in Anwendung
Derzeit verwende ich die folgenden Flags, um Garbage Collection zu behandeln.
-XX\:+UseParNewGC, -XX\:+UseConcMarkSweepGC, -XX:CMSInitiatingOccupancyFraction=50, -XX\:+DisableExplicitGC, -XX\:+PrintGCDateStamps, -XX\:+PrintGCDetails, -Xloggc\:/home/user/logs/gc.log
Allerdings habe ich festgestellt, dass die Anwendung abstürzt für einige Sekunden während einiger Garbage Collection, und dann weitermacht - Das ist völlig inakzeptabel, da es ein Spiel-Server ist.
Ein Anfall von meiner Müllabfuhr Protokolle können here gefunden werden.
Alle Ratschläge, was ich ändern sollte, um diese langen Pausen zu reduzieren, würden sehr geschätzt werden.
Ich glaube, das ist einer der Gründe ist, warum viele Menschen C bevorzugen ++ über Java für Echtzeit-Spiele . Aber nimm * mein * Wort nicht dafür ... – Mysticial
Kannst du bestimmte Zeilen mit langen gc-Pausen angeben? Anstatt zu erwarten, dass die Leser die Protokolldatei für die Zeilen – noahlz
durchforsten, bevorzuge ich den Off-Heap-Speicher für etwas über 1 GB. Off-Heap-Speicher ist schwieriger zu codieren, hat jedoch nur geringen Einfluss auf GC-Pausenzeiten. –