宝哥软件园

阿里巴巴开源龙井JDK最新版本8.1.1-GA发布

编辑:宝哥软件园 来源:互联网 时间:2021-08-19

简介:新版本有三大变化:同步OpenJDK上游社区jdk8u222-ga的最新更新;带来了一个正式功能:G1弹性堆;发布了用户期待的Windows实验版。

龙井JDK第一个官方版本8.0.0-GA发布至今已有三个月,Github上该项目的明星人数持续攀升至1900人。今天,我们带来了最新的8.1.1-GA版本,其中包含全新的功能和更新。详见下文。

龙井8.1.1-GA的新变化

在新版本中,我们同步了OpenJDK上游社区jdk8u222-ga的最新更新,带来了上游稳定版的最新安全更新和补丁。

8.0.0-GA发布的时候,我们推出了Dragonwell的第三个新功能,ElasticHeap,很多用户都跃跃欲试。这个版本带来了一个正式的功能:G1弹性堆。它可以在不影响Java业务运行的情况下,动态节省Java进程的物理内存。

此外,我们还发布了用户期待的Windows实验版Experimental Windowsversion,让使用Windows的伙伴可以更方便地使用Dragonwell JDK做相应的开发工作。

G1弹性廉价

从功能名称可以看出,ElasticHeap是基于G1 GC开发的,所以想用这个功能的小伙伴需要打开g1gc (-xx3360use g1gc)。在8.0.0-GA正式版的介绍中,我们介绍了一些技术背景。由于Java中自动内存管理的特性,整个Java Heap的地址空间和物理内存都会被Java进程占用,即使利用率不高,回收后也不会返回给操作系统,导致Java进程的内存驻留更高。

OpenJDK8的几种常规GC算法在Full GC期间只能支持按照一定的规则对Java堆进行有限的缩减。然而,Java开发伙伴非常清楚Full GC的频繁STW(停止世界)对Java应用程序意味着什么,长时间的暂停将导致许多意想不到的应用程序异常和无响应。

ElasticHeap可以根据整个GC的压力,将Java堆的物理内存返回给操作系统,不会有额外的STW给Java应用带来超时的异常风险。核心设计有两个特点:

分别处理Java Heap中的新区和旧区。特别是,为了在可能的高压下保持气相色谱的吞吐量,许多应用程序将保持相对较大的年轻一代。例如,G1新区域的默认最大值是整个堆的60%。年轻的时候GC频率不高,很大程度上浪费了Java堆,但是没有办法快速节省这个内存。假设当新面积为整堆的60%时,年轻的GC频率为90秒一次。当整个堆的10%作为年轻一代使用时,GC频率变为15秒,也可以满足Java的正常运行,从而节省50%的Java堆内存。当压力增加和GC频率增加时,它会自动检测到变化,并重新映射内存以扩展新区域的大小。使用并发线程,返回内存和重新映射的工作是并发和并行处理的。由于与Linux内核的交互,map/unmap内存实际上是一个耗时的操作,尤其是重新映射内存后,会有页面错误的开销,一次操作就能轻松消耗掉G内存几百毫秒甚至几秒的时间。因此,如果传统上在GC STW操作内存映射/unmap,Java应用会有很大的毛刺,这对于很多在线服务应用来说是不可接受的。Java应用线程不会受到并发线程对unmap的并行处理和重映射后页面错误的开销的影响。在正常的GC STW进程中,Java堆的容量会及时同步。在新的第12版OpenJDK中,也引入了周期性触发G1并发标记的机制来触发内存节省,但并没有解决STW的map/unmap开销问题,也不能快速发现和处理年轻GC周期年轻一代的内存浪费。目前除了在Dragonwell 8.1.1中发布之外,我们还将G1ElasticHeap的补丁提交给OpenJDK社区进行审核和讨论,希望将这些创造性的改动加入到最新的OpenJDK G1 GC中。

在云起会议上的孤独演讲清楚地描述了弹性廉价的使用场景。随着双11流量的快速增加,核心应用tradeplatform3在高流量的压力下快速增加Java堆和内存来维持稳定性。高峰过后,记忆逐渐萎缩。从集群维度来看,在线Java应用占用大量内存。即使在线流量低,cpu利用率低,由于内存占用,集群机器的cpu资源仍然无法重用。ElasticHeap可以有效减少低压在线Java应用的内存占用,并转移部分内存资源运行离线任务,从而突破在线应用集群资源利用的内存瓶颈。在这个例子中,Java进程的物理内存节省了22.8%。

如果您想立即使用最新的功能,可以从以下地址下载最新版本的Dragonwell JDK的二进制软件包。

https://github.com/alibaba/dragonwell8/releases

此处提供了用户指南和发行说明。在用户指南的最后,还有支持的美甲群和邮件。

https://github.com/alibaba/dragonwell8/wiki

如果有朋友觉得这个功能适合自己的场景,不妨从OpenJDK社区邮件列表中支持我们,让OpenJDK听到更多中国Java用户和开发者的声音。

摘要

以上是边肖介绍的阿里巴巴开源龙井JDK最新版本8.1.1-GA。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!

更多资讯
游戏推荐
更多+