Java 11 新特性
Java 11 概述
jdk 11在 2018年9 月 26 日 发布。这是 Java 大版本周期变化后的第一个长期支持版本
需要登录:https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html
https://www.injdk.cn/
http://www.codebaoku.com/jdk/jdk-index.html
国内下载地址
- 已失效 windows https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/windows/OpenJDK11U-jdk_x64_windows_hotspot_11.0.12_7.zip
- 已失效 linux https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/11/jdk/x64/linux/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz
- https://repo.huaweicloud.com/java/jdk/
局部类型推断
var str = "helloworld";
System.out.println(str);
在类中的成员变量(也叫属性)不可以使用var来定义。
个人体会是在lambda中使用。实际编码中不建议使用。
集合
创建新集合
List.of("hello","world","java");
Stream中的新API
takeWhile()
该方法会从流中一直获取判定器为真的元素,一旦遇到元素为假,就终止处理
Stream<Integer> stream = Stream.of(1, 3, 2, 5, 6, 7);
Stream stream2 = stream.takeWhile(t -> t % 2 != 0);
stream2.forEach(System.out::println);
这段程序的运行结果:
1
3
dropWhile()
那么这方法和takeWhile()方法相反,它会从流中一直丢弃判定器为真的元素,一旦遇到元素为假,就终止处理
Stream<Integer> stream = Stream.of(1, 3, 2, 5, 6, 7);
Stream stream2 = stream.dropWhile(t -> t % 2 != 0);
stream2.forEach(System.out::println);
所以上面程序段的执行结果为:
2
5
6
7
字符串中的新API
str.isBlank()
判断字符串中的字符是否都为空白
str.strip()
去除字符串首尾的空白
str.stripTrailing()
去除字符串尾部的空白
str.stripLeading()
去除字符串首部的空白
str.repeat()
复制字符串,可以传入一个int类型值来控制复制次数
Epsilon垃圾收集器
JDK上对这个特性的描述是:开发一个处理内存分配但不实现任何实际内存回收机制的GC,一旦可用堆内存用完,JVM就会退出。
ZGC垃圾回收器
有人说这是JDK11最为瞩目的特性,没有之一,是最重磅的升级,那么ZGC的优势在哪里呢?
- GC暂停时间不会超过10毫秒
- 既能处理几百兆的小堆,也能处理几个T的大堆
- 和G1相比,应用吞吐能力不会下降超过15%
- 为未来的GC功能和利用colord指针以及Load barriers优化奠定了基础
ZGC是一个并发、基于region、压缩型的垃圾收集器,只有root扫描阶段会STW(strop the world,停止所有线程),因此ZGC的停顿时间不会随着堆的增长和存活对象的增长而变长。
用法:-XX:UnlockExperimentalVMOptions -XX:+UseZGC
Flight Recorder
作者:张三 创建时间:2024-11-08 16:28
最后编辑:张三 更新时间:2024-11-08 16:38
最后编辑:张三 更新时间:2024-11-08 16:38