Amazon Corretto
Corretto 8-Benutzerhandbuch

Liste der Patches für Amazon Corretto 8

In diesem Abschnitt werden alle Patches aufgeführt, die für Amazon Corretto 8 auf OpenJDK angewendet werden. Außerdem stellen wir Links zu den im OpenJDK-Projekt aufgeführten Problemen zur Verfügung.

[C8-1] Verhindern vorzeitiger OutOfMemoryException, wenn G1 GC-Aufruf von einem lange andauernden nativen Aufruf unterbrochen wird.

Bei Programmen, die G1 GC verwenden, konnten unechte Out-of-Memory(OOM)-Ausnahmen auftreten, auch wenn der Java-Heap noch lange nicht voll war. Dies passierte, wenn eine Spin-Schleife, die auf lange andauernde native Aufrufe gewartet hat, nach nur zwei Runden aufgab. Dieser kleine Patch sorgt dafür, dass die Schleife so lange wartet wie erforderlich. In der Regel sind wenige weitere Runden ausreichend. Im schlimmsten Fall kommt es irgendwann zu einem vollen GC (dank JDK-8137099) und das Problem wird ebenfalls gelöst. Der Patch enthält einen Einheitentest, der mehr als zwei Runden erforderlich macht und nur dann erfolgreich ausgeführt werden kann, wenn der Patch vorhanden ist. Eine entsprechende Diskussion finden Sie unter JDK-8137099.

[C8-2] Backport von OpenJDK 10 mit Fehlerbehebung für JDK-8177809: „File.lastModified() is losing milliseconds (always ends in 000).“

Der Patch entfernt Inkonsistenzen in der Art und Weise, wie der zuletzt geänderte Zeitstempel einer Datei gemeldet wird. Er standardisiert das Verhalten auf unterschiedlichen Build-Plattformen und Java-Methoden, sodass der Benutzer Präzision in der zweiten Ebene erhält. Siehe JDK-8177809.

[C8-3] Backport von OpenJDK9 mit Fehlerbehebung für JDK-8150013: „ParNew: Prune nmethods scavengable list.“

Dieser Patch reduziert Pause-Latenzen für den parallelen und den CMS Garbage Collector. Das „Root Scanning“ von GC wird um bis zu drei Größenordnungen beschleunigt, da redundante Codeinspektionen reduziert werden.

[C8-4] Backport von OpenJDK 9 mit Fehlerbehebung für JDK-8047338: „javac is not correctly filtering non-members methods to obtain the function descriptor.“

Dieser Patch behebt einen Compiler-Fehler, der Kompilierungszeitfehler hervorgerufen hat, wenn eine funktionale Schnittstelle eine Ausnahme ausgab, die zu einer erweiterten Ausnahme geführt hat.

[C8-5] Backport von OpenJDK 10 mit Fehlerbehebung für JDK-8144185: „javac produces incorrect RuntimeInvisibleTypeAnnotations length attribute.“

Dieses Problem hat dazu geführt, dass Findbugs, JaCoCo und Checker Framework bei einigen wohlgeformten Eingabeprogrammen fehlschlugen.

[C8-6] Auslösen von Bereinigung der Zeichenfolgentabelle in G1 auf Grundlage des Wachstums der Zeichenfolgentabelle.

Dieser Patch löst „gemischte“ G1-Sammlungen aus, die erforderlich sind, um Einträge der Zeichenfolgentabelle auf Grundlage des Wachstums der Zeichenfolgentabelle zu bereinigen und nicht nur die Java-Heap-Nutzung. Letzteres ist eine unabhängige Messung, die in einigen Anwendungen zu selten oder sogar nie ausgelöst werden kann. Dann kann die Zeichenfolgentabelle unbegrenzt wachsen, was effektiv einem nativen Arbeitsspeicherverlust gleichkommt. Siehe JDK-8213198.

[C8-7] Backport von OpenJDK 9 mit Fehlerbehebung für JDK-8149442: „MonitorInUseLists should be on by default, deflate idle monitors taking too long.“

Dieser Patch macht das Entfernen von Leistungsengpässen für hochgradig threadintensive Anwendungen zur Standardeinstellung. Das Aktivieren von MonitorInUseLists ermöglicht eine effizientere Verkleinerung nur potenziell verwendeter Monitore anstatt aller Monitore.

[C8-8] Backport von OpenJDK 11 mit Fehlerbehebung für JDK-8198794: „Hotspot crash on Cassandra 3.11.1 startup with libnuma 2.0.3.“

Dieser Patch verhindert, dass Cassandra 3.11.1 während des Starts abstürzt.

[C8-9] Backport von OpenJDK 11 mit Fehlerbehebung für JDK-8195115: „G1 Old Gen MemoryPool CollectionUsage.used values don't reflect mixed GC results.“

Ohne diesen Patch ist es bei Verwendung von G1 GC per JMX nicht möglich, zu bestimmen, wie voll der Heap ist.

[C8-10] Beschleunigen von Class.getSimpleName() und Class.getCanonicalName().

Speicherung beschleunigt diese Funktionen erheblich. Dieser Patch enthält Einheitentests für die Richtigkeit. Siehe JDK-8187123.

[C8-11] Backport von JDK-8068736 von OpenJDK9 mit Fehlerbehebung für „Avoid synchronization on Executable/Field.declaredAnnotations.“

Verbessert die Leistung von Executable/Field.declaredAnnotations() durch Ergebniszwischenspeicherung, die eine Thread-Synchronisierung vermeidet.

[C8-12] Backport von OpenJDK 9 mit Fehlerbehebung für JDK-8077605: „Initializing static fields causes unbounded recursion in javac.“
[C8-13] Fehlerbehebung für JDK-8130493: „javac silently ignores malformed classes in the annotation processor.“

javac hat falsch formatierte Klassendateien in einem Annotationsprozessor stillschweigend ignoriert und mit dem Beendigungscode 0 zurückgegeben. Mit diesem Patch gibt javac eine Fehlermeldung aus und gibt einen Beendigungscode ungleich null zurück.

[C8-14] Verbesserte Fehlermeldung für das jmap-Tool.

Aktualisierte Fehlermeldungen, die zusätzliche Herangehensweisen aufzeigen, wenn der Zielprozess nicht reagiert. Siehe JDK-8213443.

[C8-15] Fehlerbehebung für JDK-8185005: „Improve performance of ThreadMXBean.getThreadInfo(long ids[], int maxDepth).“

Dieser Patch verbessert die Leistung einer JVM-internen Funktion, die eine Java-Thread-Instance in einer BS-Thread-ID nachschlägt. Dies wirkt sich positiv auf verschiedene ThreadMXBean-Aufrufe aus, z. B. getThreadInfo(), getThreadCpuTime() und getThreadUserTime(). Die relative Leistungsverbesserung steigt mit der Anzahl an Threads in der JVM, da die lineare Suche durch ein Nachschlagen per Hashtabelle ersetzt wird.

[C8-16] Backport von OpenJDK 12 mit Fehlerbehebung für JDK-8206075: „On x86, assert on unbound assembler Labels used as branch targets.“

Bezeichnungsklasseinstanzen (werden zur Definition von Pseudo-Assembly-Code verwendet) können sowohl in C1 als auch in Interpreter falsch verwendet werden. Der häufigste Fehler für eine Bezeichnung ist, dass die Bezeichnung einem Branch zugewiesen, aber im Code per bind() nie als Ort definiert wird. Eine Assertion wurde hinzugefügt, um diese Fehler zu erkennen. So wurden 106 jtreg/hotspot- und 17 jtreg/jdk-Testfehler ausgelöst. Anschließend konnte festgestellt werden, dass die Bezeichnung backedge_counter_overflow nicht gebunden war, wenn UseLoopCounter „True“, UseOnStackReplacement aber „False“ war. Dieser Fehler ist jetzt behoben. Zudem besteht Schutz durch die oben stehenden Tests.

[C8-17] Verbessern der Portierbarkeit von JVM-Quellcode bei der Verwendung von gcc7.

Dieser Patch setzt aktuelle Typdeklarationen an all jenen Orten, an denen der gcc-Switch „-Wno-deprecated-declarations“ Probleme melden würde. Zudem versetzt er den Switch auch in die Lage, verwandte Probleme in Zukunft zu erkennen. So kann der Quellcode auf allen vorhandenen Amazon Linux-Versionen kompiliert werden. Dies ist eine Kombination aus vielen Aspekten von JDK-8152856, JDK-8184309, JDK-8185826, JDK-8185900, JDK-8187676, JDK-8196909, JDK-8196985, JDK-8199685, JDK-8200052, JDK-8200110, JDK-8209786, JDK-8210836, JDK-8211146, JDK-8211370, JDK-8211929, JDK-8213414 und JDK-8213575.

[C8-18] Backport von JDK 10 mit Fehlerbehebung für JDK-8195848: „JTREG test for StartManagementAgent fails.“

Weitere Informationen finden Sie unter http://serviceability-dev.openjdk.java.narkive.com/cDFwZce9.

[C8-19] Ermöglicht es einer Legacy- bzw. deaktivierten Cipher Suite (Verschlüsselungssammlung) wieder, zwei TCK-Tests zu bestehen, die ansonsten fehlschlagen würden.

 

Drei Rückportierungen von OpenJDK9 zur Unterstützung der Nutzung vorinstallierter Bibliotheken.

Rückportierte Elemente: JDK-8043805 für libjpeg, JDK-8035341 für libpng und JDK-8042159 für lcms2.

Integration von aarch64-Unterstützung von IcedTea 3.8.

 

Aktualisierungen zu anwenderspezifischen Metadaten.

Identifiziert Amazon als Anbieter dieser OpenJDK-Distribution und fügt Hyperlinks zum Melden von Problemen hinzu.

Backport von OpenJDK 9 mit Fehlerbehebung für JDK-8048782: „OpenJDK: PiscesCache : xmax/ymax rounding up can cause RasterFormatException“.

Der Fehler bezieht sich auf den sun.java2d.pisces.PiscesCache-Konstruktor, der „(int minx,int miny,int miny,int maxx,int maxy)“-Argumente akzeptiert: „bboxX1“ und „bboxY1“ (intern) werden auf Werte gesetzt, die um ein Vielfaches über den angegebenen maximalen X- und Y-Werten liegen.