wake-up-neo.com

UseConcMarkSweepGC ist veraltet. Wie wird es ersetzt?

Ein Java-Programm gibt diese Warnung mit JRE 10.0.2 aus:

Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.

Was ist der empfohlene Ersatz für diesen Switch?

3
hoosierEE

Wenn Sie die Unterstützung für CMS einstellen und anschließend den CMS-Code entfernen oder zumindest gründlicher trennen, wird der Wartungsaufwand für die GC-Codebasis reduziert und die Neuentwicklung beschleunigt. Der G1-Garbage Collector soll auf lange Sicht die meisten CMS-Anwendungen ersetzen.

Aus dem offiziellen JEP

3
Eugene

Im Folgenden finden Sie die angegebenen Lösungen in diesem Blog , wenn Sie den CMS-Algorithmus verwenden:

  1. Wechseln Sie zum G1 GC-Algorithmus: G1 GC ist seit Java= 9. zum Standard-GC-Algorithmus geworden Ihre Anwendung auf diesen Algorithmus: Er bietet möglicherweise bessere Leistungseigenschaften als der CMS GC-Algorithmus. Die Abstimmung ist viel einfacher, da vergleichsweise weniger Argumente vorhanden sind. Außerdem bietet er Optionen zum Entfernen doppelter Zeichenfolgen aus dem Speicher. Wenn Sie doppelte Zeichenfolgen entfernen können Dies kann Ihnen dabei helfen, den Gesamtspeicherbedarf zu verringern.

  2. Wechseln Sie zum Z GC-Algorithmus: Z GC ist ein skalierbarer Garbage Collector mit niedriger Latenz. Ziel ist es, die GC-Pausenzeiten unter 10 ms zu halten. Der frühe Zugriff auf den Z GC-Algorithmus ist in Java 11, 12 verfügbar. Wenn Ihre Anwendung also auf Java 11, 12 ausgeführt wird, können Sie ein Upgrade auf Z in Betracht ziehen GC-Algorithmus: Unsere vorläufige Analyse von Z GC zeigt hervorragende Ergebnisse.

  3. Fahren Sie mit CMS fort: Bei bestimmten Anwendungen hat CMS spektakuläre Ergebnisse erzielt, die mit G1 GC auch nach vielen Optimierungen nicht erreicht werden können. Wenn Sie also zwei weitere Optionen ausprobiert haben und überzeugt sind, dass der CMS-Algorithmus die perfekte Lösung für Ihre Anwendung ist :-), können Sie erwägen, den CMS-Algorithmus selbst zu verwenden. Es gibt sogar Argumente dafür, dass CMS in dieser OpenJDK JDK9-dev-Mailingliste weiterhin am Leben bleibt. Nach meiner persönlichen Erfahrung gibt es die Funktionen und APIs, die in Java 1.1 veraltet sind, auch in Java 12 (auch nach 20 Jahren noch) Es scheint, als ob alle veralteten APIs und Funktionen überleben (und niemals sterben). Daher ist es auch eine Option, weiterhin auf CMS ausgeführt zu werden. Natürlich ist es Ihr Anruf und der Anruf Ihrer Anwendungsbeteiligten.

3
Jim T

Im Folgenden sind die Lösungen in diesem Blog aufgeführt, wenn Sie den CMS-Algorithmus verwenden:

(1). Wechseln Sie zum G1 GC-Algorithmus

Der G1-GC ist seit Java 9 Standard-GC-Algorithmus. Daher können Sie Ihre Anwendung auf diesen Algorithmus verschieben. Es bietet möglicherweise bessere Leistungseigenschaften als der CMS-GC-Algorithmus. Es ist viel einfacher zu tunen, da es vergleichsweise wenige Argumente gibt. Es bietet auch Optionen zum Entfernen von doppelten Zeichenfolgen aus dem Speicher. Wenn Sie doppelte Zeichenfolgen entfernen können, können Sie möglicherweise den gesamten Speicherbedarf des Speichers verringern.

(2). Wechseln Sie zum Z GC-Algorithmus

Z GC ist ein skalierbarer Garbage Collector mit niedriger Latenz. Ziel ist es, GC-Pausenzeiten unter 10 ms zu halten. Der frühe Zugriff auf den Z GC-Algorithmus ist in Java 11, 12 verfügbar. Wenn Ihre Anwendung unter Java 11, 12 ausgeführt wird, ist ein Upgrade auf den Z GC-Algorithmus in Betracht zu ziehen. Unsere vorläufige Analyse von Z GC zeigt hervorragende Ergebnisse.

(3). Fahren Sie mit CMS fort

Für bestimmte Anwendungen haben wir mit CMS spektakuläre Ergebnisse erzielt, die der G1 GC selbst nach vielem Tuning nicht erreicht. Wenn Sie also zwei weitere Optionen ausprobiert haben und davon überzeugt sind, dass der CMS-Algorithmus die Verbindung Ihrer Anwendung im Himmel ist :-), können Sie erwägen, den CMS-Algorithmus selbst auszuführen. Es gibt sogar Argumente, die CMS in dieser OpenJDK JDK9-dev-Mailingliste am Leben erhalten. Aus meiner persönlichen Erfahrung sehe ich, dass die in Java 1.1 nicht mehr unterstützten Funktionen und APIs auch in Java 12 (auch nach 20 Jahren) weiterhin vorhanden sind. Es scheint, dass alle veralteten APIs und Funktionen zu überleben scheinen (und niemals sterben). Daher ist es auch möglich, mit CMS fortzufahren. Natürlich ist es Ihr Anruf und Ihre Anwendungsakteure rufen an.

1
Ram Lakshmanan