JDK11你必须了解的新特性
Epsilon: A No-Op Garbage Collector(Epsilon — 无操作的垃圾回收器)
Epsilon只会处理内存分配但不实现任何实际内存回收机制的GC,一旦堆内存用完,JVM就会退出。
它的使用场景:
- 性能测试。由于它没有GC,所以可以在压测时过屏蔽GC对程序性能的影响。也可以用它来对不同的实际会进行GC的回收器进行性能差异分析。
- 内存压力测试。比如测试用例应该分配不超过1 GB的内存,可以使用-Xmx1g配置-XX:+UseEpsilonGC,如果违反了该约束,则会heap dump并崩溃。
- 非常短的JOB任务。这个特性在Serverless,AWS Lambda,这种场景会很有效。
- 要求极低延迟的任务。由于GC操作带来的暂停,对于这样的应用来说是不能接受的。通过Epsilon可以避免GC操作带来的暂停。这相当于用内存换取执行时间。
HTTP Client
新的HTTP Client在JDK9中孵化,经过两个版本的优化后,在JDK11中正式转正。
Local-Variable Syntax for Lambda Parameters
允许在声明隐式类型lambda表达式的形参时使用var。
隐式类型lambda表达式:
(x, y) -> x.process(y)
JDK 10让隐式类型变量可用于本地变量:
var x = new Foo();
for (var x : xs) { ... }
try (var x = ...) { ... } catch ...
为了和本地变量保持一致,允许var作为隐式类型lambda表达式的形参:
(var x, var y) -> x.process(y)
一致性的一个好处是,修饰符,尤其是注释,可以应用于局部变量和lambda形式,而不会失去简洁。
@Nonnull var x = new Foo();
(@Nonnull var x, @Nullable var y) -> x.process(y)
Flight Recorder(飞行记录器)
它是一个低开销的数据收集框架,可用于在生产环境中分析Java应用和JVM运行状况及性能问题。
故障诊断、监控和profile收集分析是开发周期中不可缺少的一部分。但是很多问题都只会在高负载的生产环境中产生。此时就需要一个可以在生产环境中使用的监控工具,JFR由此而生。
JFR会从应用程序中记录运行时事件,同时也会记录JVM和OS的。记录的结果会存在一个单独的文件中,此文件可供开发工程师分析bug和性能问题。同时JDK中也提供了可视化工具来分析这类文件。
JFR在JDK中相关的模块:jdk.jfr,jdk.management.jfr
JFR有如下两种启动方式
- 增加JVM参数:-XX:StartFlightRecording
- 通过jcmd工具使用,用例如下:
- jcmd JFR.start :开始记录。
- jcmd JFR.dump filename=recording.jfr 。将记录文件dump下来,通过jmc来分析。
- jcmd JFR.stop :停止。
最初的Java飞行记录器(JFR)和Java任务控制(JMC)工具是Oracle在2008年收购BEA系统时获得的,之前这个功能都是商业化的,在JDK11中开源了出来。
ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸缩低延迟垃圾回收器)
现代系统中可用内存不断增长, 用户和程序员希望JVM能够以高效的方式充分利用这些内存,并且无需长时间的GC暂停时间。 ZGC一个并发,基于region,压缩型的垃圾回收器,只有root扫描阶段会STW,因此GC停顿时间不会随着堆的增长和存活对象的增长而变长。
ZGC特性:
- GC暂停时间不会超过10ms;
- 即能处理几百兆小堆,也能处理几个T的大堆(OMG);
- 和G1相比,应用吞吐能力不会下降超过15%;
- 为未来的GC功能和利用colord指针以及Load barriers优化奠定基础;
- 初始只支持64位系统;
ZGC在JDK11还处于实验阶段,所以需要通过JVM参数UnlockExperimentalVMOptions 来解锁这个特性。
-XX:+UnlockExperimentalVMOptions -XX:+UseZGC
使用ZGC除了带来了高效的垃圾回收功能外,也避免了垃圾回收器一堆的配置参数需要配置和调优。
完整特性
181: Nest-Based Access Control
309: Dynamic Class-File Constants
315: Improve Aarch64 Intrinsics
318: Epsilon: A No-Op Garbage Collector
320: Remove the Java EE and CORBA Modules
321: HTTP Client (Standard)
323: Local-Variable Syntax for Lambda Parameters
324: Key Agreement with Curve25519 and Curve448
327: Unicode 10
328: Flight Recorder
329: ChaCha20 and Poly1305 Cryptographic Algorithms
330: Launch Single-File Source-Code Programs
331: Low-Overhead Heap Profiling
332: Transport Layer Security (TLS) 1.3
333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
335: Deprecate the Nashorn JavaScript Engine
336: Deprecate the Pack200 Tools and API
JDK11你必须了解的新特性相关推荐
- jdk9、jdk10、jdk11、jdk12、jdk13新特性
我们绝大部分人估计都还在用着jdk8,12其实是一个非LTS(long time support)版本,而11与8一样是LTS版,意味着下个通用的版本将从8直接到11,毕竟11包含了9和10的所有新特 ...
- JDK11的新特性:HTTP API和reactive streams
文章目录 简介 怎么在java中使用reactive streams POST请求的例子 总结 简介 在JDK11的新特性:新的HTTP API中,我们介绍了通过新的HTTP API,我们可以发送同步 ...
- JDK11的新特性:新的HTTP API
文章目录 简介 使用HTTP Client请求的基本流程 创建HTTP Client 创建HTTP Request 发送HTTP请求 异步HTTP请求 总结 JDK11的新特性:新的HTTP API ...
- JDK10、JDK11、JDK12新特性
JDK10新特性 1.var声明变量 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言 ...
- JDK8升至JDK11 新特性整理
目录 方法新增/修改 String CharSequence Character Path Files Reader Writer InputStream OutputStream Predicate ...
- jdk11新特性,是否有必要从JDK8切换到JDK11
文章目录 1.完全支持Linux容器(包括docker) 2.ZGC 3.全新的 HTTP 客户端 API 4.模块化(Module) 5.其他 6.是否切换到JDK11 随着2022年jdk11的使 ...
- JDK11新特性解读
文章目录 一.JDK11新特性一览 二.JDK11发布计划 三.JDK11特性解读 JEP 181: Nest-Based Access Control(基于嵌套的访问控制) JEP 309: Dyn ...
- Java11新特性(一)——JDK11新特性概述
序言 关于JDK11,自从去年也就是2018年9月份 Oracle 对外公布--JDK11正式发布以来,博主就跃跃欲试,但是由于项目周期时间紧,一直未果,今年,也就是2019年2月底系统正式上线,博主 ...
- Java11新特性(二)——JDK11绿色免安装版环境变量配置教程
前言 在实际的工作环境中,因为资源有限,一个人在公司,不可能配备多台电脑,所以就不可能有多个环境,但是一个人可能存在于多个项目,例如:在公司里面,尤其在一个大型的国企里面,研发产品生产线有很多条,当研 ...
最新文章
- empress和queen区别_queen与empress
- html converttopdf无法换行_超文本标记语言的段落与换行显示!
- Tomcat NIO
- thinkphp 编辑器kindeditor
- 前端学习(2863):简单秒杀系统学习之优化cookie
- wepy组件子父传值_【WePY小程序框架实战三】-组件传值
- 你心中有这样的人吗?
- python 类命名空间,关于python:命名空间和类
- C# CSharp 回调函数
- lcd12864使用c语言pic单片机,LCD+PIC单片机12864串行显示程序
- word论文排版插件_Word自动排版软件
- js代码里链接生成二维码
- 毕业设计 STM32单片机的空气质量检测系统
- 方维直播源码搭建详细流程
- [转]Windows服务“允许服务与桌面交互”的使用和修改方法
- 根据年份和月份计算当前月有多少天?
- 找呀找呀找朋友简谱用计算机弹,儿歌找朋友简谱_儿歌找朋友歌词歌谱
- Python 函数的艺术:高阶函数
- vscode ssh 远程连接总是循环验证密码
- 支付宝七(商户会员卡之发放卡券)
热门文章
- 汤晓丹的第四版计算机操作系统--第二章总结概述
- TQ2440串口裸板程序uart0
- 朴素贝叶斯分类器及西瓜判定实例
- Unity3d办公场景灯光布设与光影烘焙及后处理【2020】
- 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案
- 帆软报表嵌入python程序_FineReport 报表工具的使用与集成
- 基于JAVA医院管理系统计算机毕业设计源码+系统+lw文档+部署(2)
- 淘宝双十二活动复盘——Mysql数据分析+Tableau可视化
- android 版本分布 友盟,友盟推送
- 百度地图API,改变驾车路线颜色(仿淘宝快递查询,一条路线两个颜色)