Ich habe diese Frage schon mal gestellt - What does JVM flag CMSClassUnloadingEnabled actually do?, aber diesmal ist es etwas anders!CMSPermGenSweepingEnabled vs CMSClassUnloadingEnabled
Wenn ich einen Java-VM mit dem -XX:+CMSPermGenSweepingEnabled
Flag gesetzt zu starten, wird die folgende Meldung ausgegeben:
Bitte benutzen Sie CMSClassUnloadingEnabled anstelle von CMSPermGenSweepingEnabled in Zukunft
Die -XX:+CMSPermGenSweepingEnabled
Flagge wird häufig verwendet, um gegen PermGen OutOfMemory
Fehler zu mildern, jedoch habe ich read elsewhere, die Menschen haben festgestellt, dass durch Befolgen der oben genannten Ratschläge sie immer noch diese Fehler hatten, aber indem Sie mit -XX:+CMSPermGenSweepingEnabled
sowiehaftenihre VM ist zwischen Neustarts länger geblieben.
Ersetzt -XX:+CMSClassUnloadingEnabled
wirklich -XX:+CMSPermGenSweepingEnabled
oder gibt es noch einen Vorteil, wenn Sie beide haben?
Vielen Dank im Voraus
Rich- ps: Ich weiß, dass die Ursache für zul gen Problemen Classloader Lecks immer noch in der Regel ist dies mehr über die Nachricht ist, dass die JVM erzeugt, wenn wir die oben genannten Optionen verwenden.
Danke - haben Sie irgendwelche Links oder andere Möglichkeiten, dies zu unterstützen? – Rich
Laden Sie den JDK-Quellcode (einschließlich Hotspot) herunter und inspizieren Sie 'hotspot/src/share/vm/runtime/globals.hpp'. 'CMSPermGenSweepingEnabled' ist in 1.5 vorhanden und in 1.6 nicht vorhanden. Darüber hinaus enthält die Version 1.6 von 'hotspot/src/share/vm/runtime/arguments.cpp' neuen Code zum Drucken der Nachricht. – kschneid
das ist hilfreich – hvgotcodes