Java12新特性 -- 默认生成类数据共享(CDS)归档文件
默认生成类数据共享(CDS)归档文件
同一个物理机/虚拟机上启动多个JVM时,如果每个虚拟机都单独装载自己需要的所有类,启动成本和内
存占用是比较高的。所以Java团队引入了类数据共享机制 (Class Data Sharing ,简称 CDS) 的概念,通过把一些核心类在每个JVM间共享,每个JVM只需要装载自己的应用类即可。好处是:启动时间减少了,另外核心类是共享的,所以JVM的内存占用也减少了。
历史版本
-
JDK5引入了Class-Data Sharing可以用于多个JVM共享class,提升启动速度,最早只支持system classes及
serial GC。 -
JDK9对其进行扩展以支持application classes及其他GC算法。
-
java10的新特性JEP 310: Application Class-Data Sharing扩展了JDK5引入的Class-Data Sharing,支持
application的Class-Data Sharing并开源出来(以前是commercial feature)- CDS 只能作用于 BootClassLoader 加载的类,不能作用于 AppClassLoader 或者自定义的 ClassLoader加载的类。在 Java 10 中,则将 CDS 扩展为 AppCDS,顾名思义,AppCDS 不止能够作用于BootClassLoader了,AppClassLoader 和自定义的 ClassLoader 也都能够起作用,大大加大了 CDS 的适用范围。也就说开发自定义的类也可以装载给多个JVM共享了。
-
JDK11将-Xshare:off改为默认-Xshare:auto,以更加方便使用CDS特性。
迭代效果
Java 8 以来,在基本 CDS 功能上进行了许多增强、改进,启用 CDS 后应用的启动时间和内存占用量显着
减少。使用 Java 11 早期版本在 64 位 Linux 平台上运行 HelloWorld 进行测试,测试结果显示启动时间缩短有 32%,同时在其他 64 位平台上,也有类似或更高的启动性能提升。
Java12新特性
JDK 12之前,想要利用CDS的用户,即使仅使用JDK中提供的默认类列表,也必须java -Xshare:dump 作为额外的步骤来运行。
Java 12 针对 64 位平台下的 JDK 构建过程进行了增强改进,使其默认生成类数据共享(CDS)归档,以进一步达到改进应用程序的启动时间的目的,同时也避免了需要手动运行:java -Xshare:dump 的需要,修改后的 JDK 将在${JAVA_HOME}/lib/server 目录中生成一份名为classes.jsa的默认archive文件(大概有18M)方便大家使用。
当然如果需要,也可以添加其他 GC 参数,来调整堆大小等,以获得更优的内存分布情况,同时用户也可以像之前一样创建自定义的 CDS 存档文件。
相关文章
- shell脚本--函数
- 最小生成树(Kruskal+Prim)--模板
- Python标准库 -- UUID模块(生成唯一标识)
- selenium-webdriver(python) (十四) -- webdriver原理
- 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态
- Help & Manual 导航生成失败--解决
- JavaScript -- 条件语句
- [CoffeeScript] Level 3: Conditionals & Operators -- Ex
- loadrunner12.55:关联回放失败Action.c(16): Error: C interpreter run time error: Action.c (16): Error -- memory violation : Exception ACCESS_VIOLATION received.,自动关联生成函数web_reg_save_param_attrib()
- Java工具类--雪花算法生成全局唯一ID
- 《安富莱嵌入式周报》第211期:2021.05.03--2021.05.09
- PEP 530 -- 异步推导式
- 掌握VS2010调试 -- 入门指南
- 自己主动更新--下载apk以及提示对话框的实现(3)
- y141.第八章 Servless和Knative从入门到精通 -- Serving及实践、Revision和流量管理(五)
- 5.2 calendar--通用日期的相关函数(4)
- 论文笔记系列:经典主干网络(二)-- DenseNet
- HCIE-Cloud Computing LAB备考第二步:逐题攻破--第二题:FusionAccess-场景选择-完整复制与链接克隆
- 设计网站中的精品,你可能需要它--第二期
- FPGA--VGA显示实验之Verilog代码描述(图像数据生成模块)