JDK11新特性学习(二)

// JDK9 --> JDK11

异步HTTP客户端

JDK9开始引入,JDK11中正式可用。

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder(URI.create("www.baidu.com")).build();
BodyHandler<String> ResponseBodyHandler = BodyHandlers.ofString();
// 同步
HttpResponse response = client.send(request, responseBodyHandler);
System.out.println(response.body());
// 异步
CompletableFuture<HttpResponse<String>> sendAsync = client.sendAsync(request, responseBodyHandler);
HttpResponse<String> response = sendAsync.get();
System.out.println(response.body());

JDK11移除内容

主要移除一些使用很少的功能,比如:
移除了Thread.destory() Thread.stop(Throwable)
移除了javafx openjdk
移除了java mission control
移除了xml有关的所有模块,仅留下java.xml.crypto jdk.xml.dom java.xml

PS: java都移除了javafx,学校老师还在上这门课 o(>﹏<)o

Unicode 10新增字符

新增了56个emoji表情符号、8518个字符,字符总数达到了136690,从而原来的两个字节已经无法处理。
lang包下新增了处理字符的类CharacterDateXX,以及String类中原有的与CodePoints有关的方法,用来处理超过大小的字符。

Epsilon GC

JDK中对这个垃圾收集器的描述是:处理内存分配但不实现任何实际内存回收机制的gc,一旦堆内存用完JVM就退出
指出如果调用System.gc()也是没有效果的

-XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC
# 效果等价于
-XX:+DisableExplicitGC

主要用途:

  1. 性能测试,过滤掉由于GC引起的性能假象
  2. 内存压力测试
  3. 运行所需时间非常短的任务,GC是在浪费时间空间

ZGC

特点:伸缩低延迟(Scalable Low-Latency),即能处理几百兆小堆,也能处理几T大堆。只有root扫描阶段会STW,GC停顿时间不会随着堆增长和存活对象增长而增长。
设计目标:支持TB级别的内存管理,暂停时间<10ms,对程序吞吐量影响<15%
本质:ZGC是一个并发的,基于区(region)的压缩型垃圾收集器,它用42位描述内存地址编号,从而支持了TB级别的内存管理,用剩下的22位可以扩展实现机制,例如多层堆(热对象与冷对象分层),压缩堆等

-XX:+UnlockExperimentalVMOptions -XX:+UseZGC 

PS: JVM这块可以看我之前的博客进行理解!

G1增强

JDK11实现G1的并行full GC,快速的CardTable扫描,更方便的GC配置和调优等

完全支持linux容器

在JDK9之前JVM无法识别容器使用标志设置的内存限制和CPU限制,导致应用性能下降。(JDK9:什么Σ(⊙▽⊙"!,我竟然在docker中运行)
JVM现在可以识别容器控制组(cgroups)设置的约束

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值