Shenandoah 是以实验特性在 JDK12 中引入的 。在 JDK15 中正式上线 。
使用 Shenandoah 的暂停时间与堆大小无关,这意味着无论堆是 200MB 还是 200GB ,都将具有相同的一致暂停时间 。与 ZGC 类似 , Shenandoah GC 主要目标是 99.9% 的暂停小于 10ms,暂停与堆大小无关等 。
ZGC 和 ShenandoahGC 的一些主要区别:
- 设计目标:ZGC 和 ShenandoahGC 都是为了实现低延迟的垃圾收集而设计的 。
- 并发回收:ShenandoahGC 实现了并发回收,这意味着它可以在应用线程运行的同时进行垃圾收集,从而减少了垃圾收集对应用性能的影响 。
- 内存管理:ShenandoahGC 使用名为“连接矩阵”的全局数据结构来记录跨 Region 的引用关系,降低了处理跨代指针时的记忆集维护消耗 。而 ZGC 的 Region 可以动态创建和销毁 , 容量也可以动态调整 。
- 开发者:Shenandoah 由 RedHat 开发 , 而 ZGC 由 Oracle 开发 。
1.6 String 新增方法
- transform(Function):对字符串进行处理后返回 。
var rs = "test".transform(s -> s + "Java").transform(s -> s.toUpperCase()); // TESTJAVA- indent:该方法允许我们调整String实例的缩进 。
String result = "Javanjavantest".indent(3);/*结果会缩进三格Javajavatest*/1.7 Files 新增 mismatch 方法返回内容第一次不匹配的字符位置索引 。System.out.println(Files.mismatch(Path.of("a.txt"),Path.of("b.txt")));1.8 核心库 java.text 支持压缩数字格式NumberFormat 添加了对 ”紧凑形式格式化数字“ 的支持 。”紧凑数字格式“是指以简短或人类可读形式表示的数字 。
例如,在 en_US 语言环境中 , 1000 可以格式化为 “ 1K ”,1000000 可以格式化为 “ 1M ”,具体取决于指定的样式 NumberFormat.Style。紧凑数字格式由 LDML 的 Compact Number 格式规范定义 。要获取实例,请使用 NumberFormat 紧凑数字格式所给出的工厂方法之一 。
NumberFormat fmt = NumberFormat.getCompactNumberInstance(Locale.US, NumberFormat.Style.SHORT);String result = fmt.format(1000);//1Kvar cnf = NumberFormat.getCompactNumberInstance(Locale.CHINA,NumberFormat.Style.SHORT);System.out.println(cnf.format(5_0000));//"5万"System.out.println(cnf.format(7_9200));//"7.9万"System.out.println(cnf.format(8_000_000));//"800万"System.out.println(cnf.format(9L << 30));//"96亿"System.out.println(cnf.format(6L << 50));//"5637142兆"System.out.println(cnf.format(6L << 60));//"6917529京"1.9 JDK17 支持到 Unicode13JDK12 支持 Unicode11.0【JDK17 与 JDK11 特性差异浅谈】JDK13 支持 Unicode12.1
从 JDK14 到 JDK17 均是支持 Unicode13.0
1.10 NullPointerExceptions 升级JDK14 之前,从报错中我们只能得到错误出现的行数 , 但在 JDK14 之后 , 会清晰的告诉你哪个对象空指针了 。
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.charAt(int)" because "str" is nullat com.qf.jdk14.Test.main(Test.java:11)1.11 文本块特性背景:在 Java 中,在字符串文字中嵌入 html ,XML,SQL 或 JSON 片段通常需要先进行转义和串联的大量编辑,然后才能编译包含该片段的代码 。该代码段通常难以阅读且难以维护 。Java 的文本块特性是在 JDK15 中正式实现的 。这个特性首先在 JDK13 中以预览版的形式发布,然后在 JDK14 中改进并再次以预览版的形式发布 。这一特性提高了 Java 程序书写大段字符串文本的可读性和方便性 。
文本块的开头定界符是由三个双引号 """ 开始,从新的一行开始字符串的内容 , 以 """ 结束 。如果结束的 """ 另起一行时,字符串内容最后会留有一新行 。
使用案例
String query = "SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`n" +"WHERE `CITY` = 'INDIANAPOLIS'n" +"ORDER BY `ID`, `LAST_NAME`;";//使用文本块语法String query = """SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`WHERE `CITY` = 'INDIANAPOLIS'ORDER BY `EMP_ID`, `LAST_NAME`;""";
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ChatGPT元年之后,AI重塑世界,人类如何与其“智慧共生”?
- 网站SEO优化:方法与案例
- 一段微信小程序前端与后端连接的代码,带注解
- 谢楠发长文回应吴京近期争议:尊重与爱护并存
- 汪峰与新女友竟相差16岁,身高还超过他,看来有代沟了
- 绝了!曝布克前女友与坏兔子分手后又约会!
- 贾玲瘦身照流出,A先生替身露脸,剧透的尺度与节奏
- 黄海冰:与丁克妻子离婚后,娶小12岁娇妻,今50岁把俩孩子宠上天
- 林志颖娇妻晒母子生活照!肤白貌美显年轻,与15岁儿子kimi似姐弟
- 47岁陈建州近照认不出!与范玮琪一家人合影,脸部发福判若两人
