[转帖]【毕昇 JDK】毕昇 JDK 四大关键特性解读

毕昇,jdk,四大,关键,特性,解读 · 浏览次数 : 0

小编点评

## 毕昇 JDK 4 大关键特性解读 **1. 快速序列化** * 提升原生序列化性能问题背景:在一些无法使用 Kyro(无法修改代码时),需要使用 OpenJDK 原生序列化特性的场景,OpenJDK 原生的序列化机制会耗时较长,导致性能较低。 * 毕昇 JDK8&11 通过实行快速序列化特性提升其性能,快速序列化实现原理大致如下: * 减少序列化数据字段和提供数据缓存的方式提升 OpenJDK 原生序列化的性能。 * 详细介绍可参考毕昇 JDK 社区快速序列化特性介绍。 **2. AppCDS** * 提升 java 应用启动速度 * 从 JSA 文件读取共享数据,省略了共享类的加载过程 * 支持多进程间共享,也减少对内存的占用。 **3. G1GC 堆内存伸缩** * 在 G1 中引入堆内存伸缩特性,在应用程序 CPU 占比不高情况下,定期尝试释放 G1 的空闲堆内存空间给 OS,达到内存资源的最优使用。 **4. KAE 加解密** * 利用 Provider 机制,实现对鲲鹏服务器 KAE 加解密特性的支持。 * 帮助用户提升在鲲鹏 AArch64 服务器加解密业务的竞争力。

正文

https://bbs.huaweicloud.com/forum/thread-148343-1-1.html

 

发表于 2021-08-19 20:25:535618查看

毕昇 JDK 是华为基于 OpenJDK 优化后的开源版本,是一款高性能、可用于生产环境的 OpenJDK 发行版。毕昇 JDK 稳定运行在华为内部 500 多个产品上,毕昇 JDK 团队积累了丰富的开发经验,解决了许多实际业务中由原生 OpenJDK 缺陷引起的问题。

毕昇 JDK 致力于为 Java 开发者提供一款稳定可靠、高性能、易调测的 JDK,也为用户在鲲鹏 AArch64 架构上提供一个更好的选择。本文基于毕昇 JDK8 和毕昇 JDK11 版本特性进行介绍。


了解毕昇 JDK

毕昇 JDK 是 OpenJDK 的下游,对华为内部一些应用场景上遇到的性能和稳定性问题进行了修复,并针对鲲鹏 AArch64 架构进行了稳定性增强和性能优化,尤其在大数据场景下性能更好。
  • License:采用 GPLv2 with Classpath Exception 协议。
  • 支持 Java 版本:目前毕昇 JDK 支持 8 和 11 两个 LTS 版本。
  • 支持架构:支持鲲鹏 AArch64 架构,毕昇 JDK 开源代码支持 x86 版本自构建。
  • 支持操作系统:目前仅支持 Linux 版本,对操作系统的要求是鲲鹏  AArch64 平台上 glibc 版本不低于 2.17,基本覆盖所有主流操作系统,已验证的 OS 列表,可参考鲲鹏社区产品页的兼容性查询工具。

 

毕昇 JDK 新增特性

在 OpenJDK 基础上,毕昇 JDK 在鲲鹏 ARM 架构上进行了性能优化,新增了快速序列化、AppCDS、G1GC 堆内存伸缩、KAE Provider 等特性,充分提升毕昇 JDK 在鲲鹏 ARM 架构下的运行性能。下文将对这四项优势特性进行详细的介绍。

 

快速序列化——提升原生序列化性能

问题背景:

在一些无法使用 Kyro(无法修改代码时),需要使用 OpenJDK 原生序列化特性的场景,OpenJDK 原生的序列化机制会耗时较长,导致性能较低。毕昇 JDK8&11 通过实行快速序列化特性提升其性能,快速序列化实现原理大致如下图:

 

快速序列化的实现原理

通过减少序列化数据字段和提供数据缓存的方式提升 OpenJDK 原生序列化的性能,详细介绍可参考毕昇 JDK 社区快速序列化特性介绍,该特性在毕昇 JDK8&11 都支持。

场景建议:

业务中序列化/反序列化部分占比较高的场景可以考虑使用。比如:readObject/ writeObject 热点方法占比较高,可以尝试使能该特性。重复对象越多,场景收益越大。实测在某序列化占比较高场景,快速序列化特性较原生序列化性能收益提升15%。

使能方法:

-XX:+UnlockExperimentalVMOptions-XX:+UseFastSerializer -DfastSerializerEscapeMode=true

 

AppCDS——提升 java 应用启动速度

在 Java 程序运行初始阶段,类的加载是一个比较耗时的过程,且在每次程序运行中均需要执行一遍。而 CDS(Class Data Sharing)技术,就是把类加载后的数据保存到文件中,下次运行时,直接将加载后的类数据从文件中恢复到内存中,不需要再重新执行类的加载过程,从而提高性能。AppCDS 特性在原 CDS 特性基础上增加了对应用类的支持,实现原理如下图所示:

AppCDS 的实现原理

从实现原理图可以看到,AppCDS 特性通过从 JSA 文件读取共享数据,省略了共享类的加载过程。同时 Shared Memory 支持多进程间共享,也减少对内存的占用。具体使能方式可参考毕昇 JDK 社区关于 AppCDS 特性的使用介绍。


G1GC 堆内存伸缩——及时释放空闲堆内存

在 OpenJDK 社区的 8u 版本中,即使 G1GC 在空闲堆内存没有被使用时,也不会主动及时归还给 OS,会造成内存资源占用浪费情况。由于 G1 尽可能避免触发 Full GC,因此在许多情况下,除非强制从外部执行 Full GC,否则 G1 不会将空闲的 Java 堆内存释放给操作系统。毕昇 JDK8 通过在 G1 中引入堆内存伸缩特性,在应用程序 CPU 占比不高情况下,定期尝试释放 G1 的空闲堆内存空间给 OS,达到内存资源的最优使用。

特性开启后内存释放示意图

上图为某业务使能该特性后实测的 JProfile 示意图,可见空闲内存会被平滑释放。在产品线某业务场景下运行 49 个微服务,实测开启 G1 堆内存回收特性比默认 G1GC 的实际物理内存减少 40%。在默认情况下,毕昇 JDK8 不主动开启此功能,对于延迟和吞吐量敏感的业务,不会受到影响。

使能方式:

-XX:+UseG1GC –XX:+G1Uncommit

KAE Provider——支持鲲鹏硬加速/提升加解密速度

KAE 加解密是鲲鹏加速引擎的加解密模块,鲲鹏硬加速模块实现了 RSA/ SM3/ SM4/ DH/ MD5/ AES等算法,提供了高性能对称加解密、非对称加解密算法能力,兼容 openssl1.1.1a 及其之后版本,支持同步和异步机制。毕昇 JDK 8 通过利用 Provider 机制,实现对鲲鹏服务器 KAE 加解密特性的支持,以帮助用户提升在鲲鹏 AArch64 服务器加解密业务的竞争力,特性实现原理可参考下图,详细介绍可参考毕昇 JDK 社区关于 KAE Provider 特性说明。

KAE Provider 特性实现原理

该特性在某 web 中间件业务场景中,性能收益较 OpenJDK 原生特性提升90%。

支持算法列表:

算法

说明

摘要算法

包括 MD5、SHA256、SHA384、SM3

对称加密算法 AES

支持 ECB、CBC、CTR、GCM 模式

对称加密算法 SM4

包括 ECB、CBC、CTR、OFB 模式

HMac

包括 HmacMD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA51

非对称加解密算法 RSA

支持512、1024、2048、3072、4096位秘钥大小

DH

包括 DHKeyPairGenerator 和 DHKeyAgreement,支持512、1024、2048、3072、4096位秘钥

ECDH

包括 ECKeyPairGenerator 和 ECDHKeyAgreement,支持曲线secp224r1、prime256v1、secp384r1、secp521r1

RSA 签名

包括 RSASignature 和 RSAPSSSignature,私钥只支持 RSAPrivateCrtKey


其他特性

毕昇 JDK 其他特性如:G1GC 支持 Numa-Aware、毕昇 JDK 11 AArch64 版本支持的 ZGC、G1 Full GC 优化、Jmap 支持并行扫描等详情请点击毕昇JDK产品页获取。毕昇 JDK8 和 11 均已开源,并每隔 3 个月进行版本升级和新特性合入,欢迎来毕昇 JDK 开源社区获取最新信息和技术讨论。如果遇到相关技术问题(包括但不限于毕昇 JDK),也可以通过毕昇 JDK 社区进行讨论。

 

原文转载自 华为计算-【鲲鹏 DevKit 黑科技揭秘】┃毕昇 JDK 4大关键特性解读

与[转帖]【毕昇 JDK】毕昇 JDK 四大关键特性解读相似的内容:

[转帖]【毕昇 JDK】毕昇 JDK 四大关键特性解读

https://bbs.huaweicloud.com/forum/thread-148343-1-1.html 发表于 2021-08-19 20:25:535618查看 毕昇 JDK 是华为基于 OpenJDK 优化后的开源版本,是一款高性能、可用于生产环境的 OpenJDK 发行版。毕昇 JD

[转帖]毕昇 JDK:为啥是ARM 上超好用的 JDK

https://zhuanlan.zhihu.com/p/379175713 本文分享自华为云社区《【云驻共创】毕昇 JDK:“传奇再现”华为如何打造 ARM 上最好用的 JDK?》,原文作者:白鹿第一帅。 前言 不知道大家是否听说过亦或是使用过毕昇 JDK,是否从事 Java 工作?是否从事 JV

[转帖]毕昇JDK8和JDK11首次同时发布Aarch64和X86_64两个版本

https://blog.51cto.com/u_15127420/4372256 2021 年 9 月 30 日,毕昇 JDK update Q3 版本正式发布,本次发布将包含 X86_64 版本。此前,毕昇 JDK 只发布 Aarch64 版本,这可能会对运维产生一定的影响,例如需要根据架构构建

[转帖]华为毕昇 JDK 8u292、11.0.11 发布!

https://baijiahao.baidu.com/s?id=1705499834793298544&wfr=spider&for=pc 2021 年 6 月 30 日,毕昇 JDK update Q2 版本正式发布,下载方式见文末参考链接。该版本在同步 OpenJDK 社区 8u292/11.

[转帖]【技术剖析】12. 毕昇 JDK 8 中 AppCDS 实现介绍

https://bbs.huaweicloud.com/forum/thread-169622-1-1.html 作者:伍家华 > 编者按:笔者通过在 Hive 的场景发现 AppCDS 技术存在的价值,然后分析了 AppCDS 的工作原理,并将 JDK 11 中的特性移植到毕昇 JDK 8,在移植

[转帖]

Linux ubuntu20.04 网络配置(图文教程) 因为我是刚装好的最小系统,所以很多东西都没有,在开始配置之前需要做下准备 环境准备 系统:ubuntu20.04网卡:双网卡 网卡一:供连接互联网使用网卡二:供连接内网使用(看情况,如果一张网卡足够,没必要做第二张网卡) 工具: net-to

[转帖]

https://cloud.tencent.com/developer/article/2168105?areaSource=104001.13&traceId=zcVNsKTUApF9rNJSkcCbB 前言 Redis作为高性能的内存数据库,在大数据量的情况下也会遇到性能瓶颈,日常开发中只有时刻

[转帖]ISV 、OSV、 SIG 概念

ISV 、OSV、 SIG 概念 2022-10-14 12:29530原创大杂烩 本文链接:https://www.cndba.cn/dave/article/108699 1. ISV: Independent Software Vendors “独立软件开发商”,特指专门从事软件的开发、生产、

[转帖]Redis 7 参数 修改 说明

2022-06-16 14:491800原创Redis 本文链接:https://www.cndba.cn/dave/article/108066 在之前的博客我们介绍了Redis 7 的安装和配置,如下: Linux 7.8 平台 Redis 7 安装并配置开机自启动 操作手册https://ww

[转帖]HTTPS中间人攻击原理

https://www.zhihu.com/people/bei-ji-85/posts 背景 前一段时间,公司北京地区上线了一个HTTPS防火墙,用来监听HTTPS流量。防火墙上线之前,邮件通知给管理层,我从我老大那里听说这个事情的时候,说这个有风险,然后意外地发现,很多人原来都不知道HTTPS防