`
大涛学长
  • 浏览: 105774 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
> **导读:**新版本主要有三大变化:同步了 OpenJDK 上游社区 jdk8u222-ga 的最新更新;带来了正式的 feature:G1ElasticHeap;发布了用户期待的 Windows 实验版本 Experimental Windows version。

距离 Dragonwell JDK 第一个正式版本 8.0.0-GA 发布已经过去 3 个月了,项目在 Github 上的 stars 继续攀升达到了 1900。今天我们带来了最新版本 8.1.1-GA 的发布,包含了全新的特性和更新。详情见下文。

龙井 8.1.1-GA 的新变化
================

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

在 8.0.0-GA 发布的时候,我们介绍了 Dragonwell 第三个新特性 ElasticHeap 的一些情况,很多用户已经跃跃欲试了,这次发布我们带来了正式的 feature:G1ElasticHeap。能够在不影响 Java 业务运行的前提下,动态节约 Java 进程物理内存。

另外,我们还发布了用户期待的 Windows 实验版本 Experimental Windows version,使用 Windows 开发的小伙伴们可以更加方便的使用 Dragonwell JDK 进行相应的开发工作。

G1ElasticHeap
=============

从 feature 的名字上我们可以看到 ElasticHeap 是基于 G1 GC 开发的,所以想要使用这个功能的小伙伴,需要开启 G1 GC(-XX:+UseG1GC)。在 8.0.0-GA 正式版介绍时,我们介绍了部分技术背景,由于 Java 自动管理内存的特性,整个 Java Heap 的地址空间和物理内存将被 Java 进程占用,即使使用率不高,回收后也并不会归还给操作系统,导致 Java 进程会有较高的常驻内存。

OpenJDK8 的几个常规 GC 算法仅能支持在 Full GC 时,按照一定规则有限缩减 Java 堆,然而 Java 开发的小伙伴们非常清楚,频繁的 Full GC 的 STW(stop-the-world)对 Java 应用意味着什么,长暂停会导致很多不可预期的应用异常和无法响应。

![p1](https://yqfile.alicdn.com/787c2d46cc00f7f6f420672bbb82f3d029ae9d45.png)

ElasticHeap 可以根据整体 GC 的压力,敏捷地将 Java 堆的物理内存归还给操作系统,没有额外的 STW 对 Java 应用带来的超时异常风险,核心设计有 2 个特别之处:

1.  分别处理 Java Heap 中新区和老区的部分。特别是不少应用为了维持可能高压力下的 GC 吞吐,会保持比较大的 young generation,例如 G1 默认的新区最大值为整堆的 60%。当 young GC 频率不高时,其实 Java 堆面临很大程度的浪费,但却没有办法快速节约这部分内存。假设当新区为整堆 60%,young GC 频率为 90 秒一次。当使用整堆 10% 作为 young generation 时,GC 频率变为 15 秒一次,同样可以满足 Java 正常运行,这样就可以节约 50% 的 Java 堆内存。而当压力变大,GC 频率变高时,会自动检测到变化并且重新 map 内存扩展新区的大小。
2.  使用了并发线程,并发且并行(concurrent and parallel)处理内存归还和重新 map 的工作。因为和 Linux kernel 交互,map/unmap 内存实际上是比较耗时的操作,特别是重新 map 内存后还会有 page fault 的开销,对于一次操作上 G 的内存,很容易消耗上百毫秒,甚至是秒级。因此,如果传统地在 GC STW中 操作内存 map/unmap,Java 应用将可能发生较大的毛刺,这是很多在线服务型应用不可接受的。通过并发线程并行处理 unmap 以及重新 map 后带来的 page fault 的开销,Java 应用线程将不受任何影响。在常规 GC STW 过程中,Java 堆的容量将会及时同步完成。

在 OpenJDK 新的 12 版本中,也引入了周期性触发 G1 concurrent mark 来触发内存的节约机制,但是并没有解决在 STW中map/unmap 的开销问题,也不能快速在 young GC 周期中来发现和处理 young generation 的内存浪费。目前除了在 Dragonwell 8.1.1 中发布,我们同时把 G1ElasticHeap 的 patch 提交给 OpenJDK 社区 review 和讨论,希望将这些创造性的变化加入到最新的 OpenJDK G1 GC 中。

![p2](https://yqfile.alicdn.com/b71912a09a19162f0f9e0f1c794131cc722cec17.png)

云栖大会上孤尽的演讲,清晰地描述了 ElasticHeap 的使用场景。在双 11 流量剧增的情况下,核心应用 tradeplatform3 迅速的回涨 Java heap 和内存,以保持高流量压力下的稳定。高峰过后,内存逐渐缩减。从集群维度来说,在线 Java 应用占据大量内存,即使在线流量低,cpu 利用率很低,由于内存的占据,集群机器的 cpu 资源依然无法复用。而 ElasticHeap 可以有效降低低压力的在线 Java 应用的内存占用,把内存资源出让一部分运行离线任务,从而突破在线应用集群的资源利用率的内存瓶颈。在本例中,节约了 22.8% 的 Java 进程的物理内存。

 

本文作者:一绿舟

[原文链接](https://link.zhihu.com/?target=https%3A//yq.aliyun.com/articles/716777%3Futm_content%3Dg_1000081478)

本文为云栖社区原创内容,未经允许不得转载。
分享到:
评论

相关推荐

    Alibaba-Dragonwell-8.10.11-aarch64-linux.tar

    Alibaba Dragonwell,由阿里巴巴开源,是一款高性能、稳定且兼容OpenJDK的Java开发工具包(JDK),其版本号为8.10.11,特别针对aarch64架构的Linux系统进行了优化。在本文中,我们将深入探讨如何在Linux aarch64平台...

    Alibaba-Dragonwell-Standard-17.0.9.0.10.9-x64-windows.zip

    17.0.9.0.10+9-GA表示这是一个GA(General Availability)版本,即正式发布版本,意味着经过充分的测试和验证,可以被广泛用于生产环境。这个版本的亮点在于其对Java 17的支持,Java 17是Oracle JDK的长期支持(LTS...

    Alibaba-Dragonwell-Standard-17.0.6.0.6+9-x64-linux.tar.gz

    在实际应用中,"dragonwell-17.0.6.0.6+9-GA"这个文件名表示的是Alibaba Dragonwell的一个具体版本,其中“17.0.6.0.6+9”表示JDK的版本号,GA代表General Availability,意味着这是一个正式发布的稳定版本,可供...

    Alibaba-Dragonwell-Standard-11.0.18.14.9-x64-windows.zip

    包含的主要文件是"dragonwell-11.0.18.14+9-GA",这代表了Dragonwell的特定版本,其中“11.0.18”对应OpenJDK 11的版本号,“14+9”可能是内部构建版本号,而“GA”表示General Availability,意味着这是一个正式...

    Alibaba-Dragonwell-Standard-17.0.11.0.12.9-x64-windows.zip

    只需解压"Alibaba-Dragonwell-Standard-17.0.11.0.12.9-x64-windows.zip"压缩包,将解压后的目录添加到系统PATH环境变量中,然后通过"java -version"命令即可验证安装成功。开发者可以像使用其他JDK版本一样,无缝...

    Alibaba-Dragonwell-Standard-11.0.19.15.7-x64-windows.zip

    安装龙井JDK后,开发者可以通过“dragonwell-11.0.19.15+7-GA”这个文件名中的版本号来确认安装的是哪个版本。在开发和部署Java应用程序时,选择这样的JDK发行版可以确保代码在高性能和高可用性的环境中运行,同时也...

    Alibaba-Dragonwell-Standard-8.14.15-x64-windows.zip

    Alibaba Dragonwell,作为阿里巴巴推出的免费OpenJDK发行版,是Java开发者们的重要选择,尤其对于那些寻求长期支持、稳定性能和安全修复的企业。这个发行版的核心在于提供一个优化的运行环境,确保Java应用程序在...

    Alibaba_Dragonwell_8.11.12_x64_windows.zip

    在压缩包中,"dragonwell-8.11.12"是主要的安装或部署文件,通常包含了完整的JRE(Java Runtime Environment)和JDK(Java Development Kit)。用户可以通过解压此文件来安装Dragonwell,然后在开发环境中配置相应的...

    dragonwell8:阿里巴巴Dragonwell8 JDK

    阿里巴巴的Dragonwell8 JDK是基于OpenJDK 8的一个长期支持(LTS)版本,它由阿里云开发和维护,旨在提供稳定、高效且安全的Java运行环境。Dragonwell8这个名字来源于中国古代神话中的“龙井”,寓意这款JDK如同深井...

    Alibaba_Dragonwell_8.11.12_x64_linux.tar.gz

    Alibaba Dragonwell,这个名字对于熟悉Java开发者而言并不陌生,它是一款由阿里巴巴开源的OpenJDK发行版,旨在为用户提供长期的支持,涵盖性能优化和关键的安全补丁。这个发行版的最新版本“8.11.12_x64_linux”专为...

    Alibaba-Dragonwell-Standard-11.0.21.17.9-x64-windows.zip

    在11.0.21.17+9-GA这个子文件中,"GA"代表General Availability,意味着这是一个面向公众发布的稳定版本,经过充分测试,适合生产环境使用。这个版本不仅包含了所有之前版本的改进,还可能包含一些特定的修复和增强...

    Dragonwell JDK 8/11/17-Windows

    Dragonwell, 阿里巴巴内部 OpenJDK 定制版AJDK 的开源版本,AJDK 为在线电商、金融、物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 内含支持windows系统,版本号分别涵盖8/...

    Alibaba-Dragonwell-Standard-11.0.18.14.9-x64-linux.tar.gz

    这个发行版不仅遵循OpenJDK的开源协议,还结合了阿里巴巴在大规模分布式系统上的实战经验,对JVM进行了优化,提升了应用的运行效率。 二、版本与特性 我们关注的是Alibaba Dragonwell的11.0.18.14.9-x64-linux版本...

    Alibaba_Dragonwell_11.0.14.10_x64_linux.tar.gz

    压缩包中的"dragonwell-11.0.14.10+0-GA"表示这是Dragonwell的11.0.14.10版本,GA代表General Availability,意味着这是一个正式发布的稳定版本,可供生产环境使用。 综上所述,Alibaba Dragonwell不仅是一个强大...

    Alibaba-Dragonwell-Extended-11.0.21.18.9-x64-windows.zip

    文件"dragonwell-11.0.21.18+9-GA"代表的是Dragonwell的一个特定版本,11.0.21.18是版本号,其中11表示Java版本,0.21可能是次要和微小的更新,+9表示内部构建编号,GA则代表General Availability,意味着这是一个可...

    Alibaba-Dragonwell-Extended-8.19.20-x64-windows.zip

    阿里巴巴龙井(Alibaba Dragonwell)是一款由阿里巴巴集团开发并维护的开源Java开发工具套件(JDK),它基于OpenJDK项目,并针对大规模分布式云计算环境进行了优化。龙井JDK提供了一个稳定、高性能的Java运行时环境...

    Alibaba-Dragonwell-Standard-8.18.19-x64-windows.zip

    在实际应用中,用户可以从压缩包"Alibaba-Dragonwell-Standard-8.18.19-x64-windows.zip"中解压出"dragonwell-8.18.19"文件夹,该文件夹包含完整的Dragonwell运行环境,包括JRE(Java运行环境)和JDK(Java开发工具...

    Alibaba-Dragonwell-Standard-17.0.5.0.5+8-x64-linux.tar.gz

    Alibaba Dragonwell,全称为 Alibaba Dragonwell JDK,是阿里巴巴开源的一款基于OpenJDK的免费长期支持(LTS)版本。此发行版以其卓越的性能、稳定性和安全性在开发者社区中赢得了广泛的认可。本文将深入探讨Alibaba...

    Open JDK1.8_for__Windows_x64(Alibaba_Dragonwell)

    阿里巴巴OpenJDK1.8大集合 Alibaba Dragonwell 是一款免费的 OpenJDK 发行版。它提供长期支持,包括性能增强和安全修复。在数据中心大规模 Java 应用部署情况下, 可以大幅度提高稳定性、效率以及性能。Alibaba ...

Global site tag (gtag.js) - Google Analytics