☕Java11新特性
java11
于2018.9.26
发布,是一个LTS
版本,本文将介绍该版本带来的主要新特性。
java11
主要新特性一览
java.lang.String
新增多个字符串处理方法java.util.Optional
类新增isEmpty()
方法- 局部变量类型推断升级
- 新的
HTTP
客户端API
正式发布 - 引入实验性的
ZGC
垃圾收集器
java.lang.String
新增多个字符串处理方法
方法 | 作用 |
---|---|
isBlank() | 判断字符串是否为空白 |
strip() | 去除首尾空白 |
stripTrailing() | 去除尾部空格 |
stripLeading() | 去除首部空白 |
repeat(count) | 复制字符串 |
lines() | 将字符串转为java.util.stream.Stream 流,每一行字符为流中的一个元素 |
代码示例如下:
1 | package com.sunchaser.sparrow.javase.java11; |
java.util.Optional
类新增isEmpty()
方法
isEmpty()
方法用来判断value
是否为空。
1 | package com.sunchaser.sparrow.javase.java11; |
局部变量类型推断升级
var
上可以添加注解。
新的HTTP
客户端API
正式发布
HttpClient
相关类的模块及包名从jdk.incubator.http
修改为java.net.http
,表示正式发布,变为可用状态。
引入实验性的ZGC
垃圾收集器
在`G1`的基础上,`ZGC`做了以下改进:
- 动态调整大小的
Region
G1
中每个Region
的大小是固定的,创建和销毁Region
,可以动态调整大小,内存使用更高效。
- 不分代,干掉了
RSets
G1
中每个Region
需要借助额外的RSets
来记录“谁引用了我”,占用了额外的内存空间,每次对象移动时,RSets
也需要更新,产生开销。
没有实现分代机制,每次都是并发的对所有region
进行回收,不象G1
是增量回收,所以用不着RSets
。不分代可能带来的性能下降,会用下面马上提到的Colored Pointer && Load Barrier
来优化。
带颜色的指针
Colored Pointer
读屏障
Load Barrier
重定位
Relocation
多重映射
Multi-Mapping
支持
NUMA
架构
-------------有过牵挂了无牵挂-------------
欢迎关注微信公众号【打工这件小事】~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 打工这件小事!
评论