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
国内下载地址

局部类型推断

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