Java12/JDK12正式发布的新特点是什么?具体变化包括Shenandoah:GC(实验功能)、Microbenchmarksuite.Switchexpresions.JVMconstantsapiont.onearch64port.
Java/JDK12自2月7日起进入RC阶段。Java12于3月19日正式发布,根据发布周期!
Java12带来了一系列新的特点:
189shenandoah:Alow-Pause-Timegarbagecolecolecolecolecolecolecolecole,GC暂停时间较低。
230microbenchmarksuite微基准测试套件。
Switchpresions(Preview)Switch表达式。
334JVMConstantsAPIJVM常量API。
340oneArch64Port,Notwo只保留Aarch64。
341DefaultCDSArchives默认数据共享归档文件。
G1MixedGC可暂停G1。
346Promptlyreturnsedcomitedmememoryfromg1G1及时返回未使用的分配内存。
1.Shenandoah:GC(实验功能)暂停时间低。
通过与正在运行的java线程同时工作,增加了一种叫做Shenandoah的GC算法,以减少GC的暂停时间。Shenandoah的暂停时间与堆的大小无关,这意味着堆是200MB还是200GB。
2.Microbenchmarksuite。
微基准测试套件。
JDK源代码增加了一套微基准测试套件,使开发人员能够轻松操作现有的微基准测试,并创建新的基准测试。
3.Switchexpresions(Preview)
Switch表达式(预览功能)
扩展switch语句不仅可以用作语句,还可以用作表达式。传统的switch语法可以用于两种写作方法,也可以用简化的casel->模式将语法匹配到不同的范围,控制执行流。这些变化将简化日常代码,为switch中的模式匹配做好准备。
4.JVMConstantsapi。
常量APIJVM。
在操作过程中,引入API对关键文件和工件的建模,特别是可以从常量池加载的常量。在新的java.lang.invoke.constant包中,定义了一系列基于值的符号引用(JVMS5.1)类型,可以描述每个可加载常量。符号引用以纯nominal的形式描述可加载常量,区别于类加载或可访问性。有些类别可以作为自己的符号引用(如string),但是对于可链接常量,定义了一系列的符号引用类型
5.OneArch64Port,Nottwo。
只保留AArch64。
删除与arm64相关的所有源,并保留32个arm和64个arch64。
JDK实现了两套64位ARM,主要存在于Src/hotspot/cpu/arm和open/src/hotspot/cpu/arch64目录中。两者都实现了arch64,现在只保留了后者,删除了Oracle提供的arm64。这将使贡献者专注于实现单个64位ARM,并消除两套重复工作。
6.DefaultCDSArchives。
默认数据共享归档文件。
对于64个平台,使用默认列表加强JDK构建过程,生成类数据共享(classdata-sharing、CDS)。
7.Abortablemixedcolecolecolectionsforg1。
G1MixedGC可以中止。
如果G1MixedGC可能超过暂停目标,则可以暂停。
Promptlyreturnusedcomitedmemoryfromg1。
8.G1及时返回未使用的已分配内存。
增强G1GC,并在业余时间自动将Java堆内存返回操作系统。为了实现最大内存返回操作系统的目标,G1定期执行或触发非活动应用程序的并发周期,以确定Java堆的整体使用。这将导致Java堆未使用的部分自动返回操作系统。在用户的控制下,完整的GC可以有选择地执行,以最大限度地提高返回内存。