Ich habe diese Frage schon einmal gestellt - Was macht das JVM-Flag CMSClassUnloadingEnabled tatsächlich? , aber diesmal ist es etwas anders!
Wenn ich eine Java-VM mit -XX:+CMSPermGenSweepingEnabledgesetztem Flag starte, wird die folgende Meldung gedruckt:
Bitte verwenden Sie in Zukunft CMSClassUnloadingEnabled anstelle von CMSPermGenSweepingEnabled
Das -XX:+CMSPermGenSweepingEnabledFlag wird oft verwendet, um PermGen OutOfMemoryFehler abzumildern. Ich habe jedoch an anderer Stelle gelesen, dass die Leute festgestellt haben, dass sie diese Fehler immer noch hatten, wenn sie den obigen Ratschlägen folgten, aber durch das Festhalten an -XX:+CMSPermGenSweepingEnabledund -XX:+CMSClassUnloadingEnabledihre VM zwischen den Neustarts länger aktiv geblieben sind.
Ersetzt es -XX:+CMSClassUnloadingEnabledwirklich -XX:+CMSPermGenSweepingEnabledoder hat es noch einen Vorteil, beide zu haben?
Danke im Voraus
Rich ps: Ich weiß, dass die Hauptursache für Perm-Probleme normalerweise immer noch Classloader-Lecks sind. Hier geht es mehr um die Nachricht, die die JVM erzeugt, wenn wir die oben genannten Optionen verwenden.