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工具使用,用例如下:
  1. jcmd JFR.start :开始记录。

    1. jcmd JFR.dump filename=recording.jfr 。将记录文件dump下来,通过jmc来分析。
  2. 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你必须了解的新特性相关推荐

  1. jdk9、jdk10、jdk11、jdk12、jdk13新特性

    我们绝大部分人估计都还在用着jdk8,12其实是一个非LTS(long time support)版本,而11与8一样是LTS版,意味着下个通用的版本将从8直接到11,毕竟11包含了9和10的所有新特 ...

  2. JDK11的新特性:HTTP API和reactive streams

    文章目录 简介 怎么在java中使用reactive streams POST请求的例子 总结 简介 在JDK11的新特性:新的HTTP API中,我们介绍了通过新的HTTP API,我们可以发送同步 ...

  3. JDK11的新特性:新的HTTP API

    文章目录 简介 使用HTTP Client请求的基本流程 创建HTTP Client 创建HTTP Request 发送HTTP请求 异步HTTP请求 总结 JDK11的新特性:新的HTTP API ...

  4. JDK10、JDK11、JDK12新特性

    JDK10新特性 1.var声明变量 很多人抱怨Java是一种强类型,需要引入大量的样板代码.甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的.许多流行的编程语言 ...

  5. JDK8升至JDK11 新特性整理

    目录 方法新增/修改 String CharSequence Character Path Files Reader Writer InputStream OutputStream Predicate ...

  6. jdk11新特性,是否有必要从JDK8切换到JDK11

    文章目录 1.完全支持Linux容器(包括docker) 2.ZGC 3.全新的 HTTP 客户端 API 4.模块化(Module) 5.其他 6.是否切换到JDK11 随着2022年jdk11的使 ...

  7. JDK11新特性解读

    文章目录 一.JDK11新特性一览 二.JDK11发布计划 三.JDK11特性解读 JEP 181: Nest-Based Access Control(基于嵌套的访问控制) JEP 309: Dyn ...

  8. Java11新特性(一)——JDK11新特性概述

    序言 关于JDK11,自从去年也就是2018年9月份 Oracle 对外公布--JDK11正式发布以来,博主就跃跃欲试,但是由于项目周期时间紧,一直未果,今年,也就是2019年2月底系统正式上线,博主 ...

  9. Java11新特性(二)——JDK11绿色免安装版环境变量配置教程

    前言 在实际的工作环境中,因为资源有限,一个人在公司,不可能配备多台电脑,所以就不可能有多个环境,但是一个人可能存在于多个项目,例如:在公司里面,尤其在一个大型的国企里面,研发产品生产线有很多条,当研 ...

最新文章

  1. empress和queen区别_queen与empress
  2. html converttopdf无法换行_超文本标记语言的段落与换行显示!
  3. Tomcat NIO
  4. thinkphp 编辑器kindeditor
  5. 前端学习(2863):简单秒杀系统学习之优化cookie
  6. wepy组件子父传值_【WePY小程序框架实战三】-组件传值
  7. 你心中有这样的人吗?
  8. python 类命名空间,关于python:命名空间和类
  9. C# CSharp 回调函数
  10. lcd12864使用c语言pic单片机,LCD+PIC单片机12864串行显示程序
  11. word论文排版插件_Word自动排版软件
  12. js代码里链接生成二维码
  13. 毕业设计 STM32单片机的空气质量检测系统
  14. 方维直播源码搭建详细流程
  15. [转]Windows服务“允许服务与桌面交互”的使用和修改方法
  16. 根据年份和月份计算当前月有多少天?
  17. 找呀找呀找朋友简谱用计算机弹,儿歌找朋友简谱_儿歌找朋友歌词歌谱
  18. Python 函数的艺术:高阶函数
  19. vscode ssh 远程连接总是循环验证密码
  20. 支付宝七(商户会员卡之发放卡券)

热门文章

  1. 汤晓丹的第四版计算机操作系统--第二章总结概述
  2. TQ2440串口裸板程序uart0
  3. 朴素贝叶斯分类器及西瓜判定实例
  4. Unity3d办公场景灯光布设与光影烘焙及后处理【2020】
  5. 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案
  6. 帆软报表嵌入python程序_FineReport 报表工具的使用与集成
  7. 基于JAVA医院管理系统计算机毕业设计源码+系统+lw文档+部署(2)
  8. 淘宝双十二活动复盘——Mysql数据分析+Tableau可视化
  9. android 版本分布 友盟,友盟推送
  10. 百度地图API,改变驾车路线颜色(仿淘宝快递查询,一条路线两个颜色)