Amazon Corretto 8 的补丁清单 - Amazon Corretto

Amazon Corretto 8 的补丁清单

本节列出了应用于 Amazon Corretto 8 的 OpenJDK 的所有补丁。我们还提供了指向 OpenJDK 项目中的问题的链接。

[C8-1] 当 G1 GC 调用被长时间运行的本机调用挂起时,防止过早出现 OutOfMemoryException。

使用 G1 GC 的程序可能会遇到虚假的内存不足 (OOM) 异常,即使 Java 堆远未填满。这种情况发生在等待长时间运行的本机调用的循环仅在两轮之后放弃时。此小补丁使此循环等待尽可能长的时间。通常多等几轮就够了。最坏的情况是,最终发生完整的 GC(由于 JDK-8137099),同时也解决了问题。此补丁包括一个单元测试,需要超过两轮并且仅在补丁到位时才能成功。有关讨论,请参阅 JDK-8137099

[C8-2] 从 OpenJDK 10 向后移植,修复 JDK-8177809:“File.lastModified() 缺少毫秒值(总是以 000 结尾)”。

此补丁消除了文件上次修改时间戳的报告方式不一致的问题。它标准化了构建平台和 Java 方法中的行为,确保用户获得二级精度。请参阅 JDK-8177809

[C8-3] 从 OpenJDK9 向后移植,修复 JDK-8150013:“ParNew:清除可清除的 nmethod 列表”。

此补丁缩短了 Parallel 和 CMS 垃圾收集器的暂停延迟。通过减少冗余代码检查,GC“根扫描”速度提高了三个数量级。

[C8-4] 从 OpenJDK 9 向后移植,修复 JDK-8047338:“javac 未正确过滤非成员方法以获取函数描述符”。

此补丁修复了一个编译器错误,当函数接口引发扩展异常的异常时,该错误会导致编译时错误。

[C8-5] 从 OpenJDK 10 向后移植,修复 JDK-8144185:“javac 生成不正确的 RuntimeInvisibleTypeAnnotations 长度属性”。

此问题使得 Findbugs、JaCoCo 和 Checker Framework 在一些输入格式正确的程序上失败。

[C8-6] 根据字符串表增长触发 G1 中的字符串表清理。

此补丁触发根据字符串表增长(而不仅仅是 Java 堆使用)清除字符串表条目所需的“混合”G1 集合。后者是一种独立的测量方法,在某些应用中可能较少触发甚至从不触发。然后,字符串表可能会无限制增长,这实际上是本机内存泄漏。请参阅 JDK-8213198

[C8-7] 从 OpenJDK 9 向后移植,修复 JDK-8149442:“MonitorInUseLists 默认应处于打开状态,防止空闲显示器耗时太长”。

此补丁将删除高度线程密集型应用程序的性能瓶颈设为默认设置。启用 MonitorInUseLists 可以更有效地减少可能正在使用的监视器,而不是整个监视器群。

[C8-8] 从 OpenJDK 11 向后移植,修复 JDK-8198794:“使用 libnuma 2.0.3 启动时 Cassandra 3.11.1 发生热点崩溃”。

此补丁可防止 Cassandra 3.11.1 在启动时崩溃。

[C8-9] 从 OpenJDK 11 向后移植,修复 JDK-8195115:“G1 Old Gen MemoryPool CollectionUsage.used 值不反映混合 GC 结果。”

如果没有此补丁,使用 G1 GC 时将无法通过 JMX 确定堆的充满程度。

[C8-10] 加速 Class.getSimpleName() 和 Class.getCanonicalName()。

记忆化大大加快了这些函数。此补丁包含正确性单元测试。请参阅 JDK-8187123

[C8-11] 从 OpenJDK9 向后移植 JDK-8068736,修复“避免在 Executable/Field.declaredAnnotations 上进行同步”。

通过避免线程同步的结果缓存提高 Executable/Field.declaredAnnotations() 的性能。

[C8-12] 从 OpenJDK 9 向后移植,修复 JDK-8077605:“初始化静态字段导致 javac 发生无限递归”。
[C8-13] 修复了 JDK-8130493:“javac 静默忽略注释处理器中的格式错误的类”。

javac 在注释处理器中静默吞噬格式错误的类文件,并返回退出代码 0。有了此补丁,javac 会报告错误消息并返回非零退出代码。

[C8-14] 改进了 jmap 工具的错误消息。

更新了在目标进程无响应时建议其他方法的错误消息。请参阅 JDK-8213443

[C8-15] 修复了 JDK-8185005:“提高 ThreadMXBean.getThreadInfo(long ids[], int maxDepth) 的性能”。

此补丁提高了从 OS 线程 ID 查找 Java 线程实例的 JVM 内部函数的性能。这有利于几个 ThreadMXBean 调用,如 getThreadInfo()、getThreadCpuTime() 和 getThreadUserTime()。相对性能的提高随着 JVM 中线程的数量而增加,因为线性搜索被哈希表查找所取代。

[C8-16] 从 OpenJDK 12 向后移植,修复 JDK-8206075:“在 x86 上,无限汇编程序标签断言用作分支目标”。

C1 和 Interpreter 中可能错误地使用标签类实例(用于定义伪汇编代码)。最常见的标签错误是“作为分支目标”但从未通过 bind() 在代码中定义为位置。添加了一个断言来捕获这些错误,从而触发 106 jtreg/hotspot 和 17 jtreg/jdk 测试故障。然后,当 UseLoopCounter 为 True,但 UseOnStackReplacement 为 False 时,我们确定标签 backingge_counter_overflow 无限制。此错误已由上述测试修复和保护。

[C8-17] 提高使用 gcc7 时 JVM 源代码的可移植性。

此补丁在 gcc 开关“-Wno-deprecated-declarations”将标记问题的所有位置放置最新类型声明。它还使开关能够捕获未来的相关问题。这将使源代码在现有全部 Amazon Linux 版本上进行编译。这是 JDK-8152856JDK-8184309JDK-8185826JDK-8185900JDK-8187676JDK-8196909JDK-8196985JDK-8199685JDK-8200052JDK-8200110JDK-8209786JDK-8210836JDK-8211146JDK-8211370JDK-8211929JDK-8213414JDK-8213575 等的组合。

[C8-18] 从 JDK 10 向后移植,修复 JDK-8195848:“StartManagementAgent 的 JTREG 测试失败”。

有关更多详细信息,请参阅 http://serviceability-dev.openjdk.java.narkive.com/cDFwZce9

[C8-19] 重新启用传统/已禁用密码套件以通过两个 TCK 测试,否则这些测试将失败。

 

从 OpenJDK9 进行三次逆向移植以支持使用预安装库。

逆向移植项:用于 libjpeg 的 JDK-8043805用于 libpng 的 JDK-8035341用于 lcms2 的 JDK-8042159

集成了 IcedTea 3.8 的 aarch64 支持。

 

针对供应商相关的元数据的更新。

将 Amazon 标识为此 OpenJDK 发行版的供应商,并添加用于报告问题的超链接。

从 OpenJDK 9 向后移植,修复 JDK-8048782:“OpenJDK:PiscesCache:xmax/ymax 向上取整可能导致 RasterFormatException”。

此错误与接受“(int minx,int miny,int maxx,int maxy)”参数的 sun.java2d.pisces.PiscesCache 构造函数相关:内部“bboxX1”和“bboxY1”设置为比给定的 X 和 Y 最大值大 1 的值。