Java 实战篇-JDK9新特性体验

执笔记忆的空白 2018-01-16 14:03:21 ⋅ 881 阅读


JDK9 已经出来好几个月了,这两天整理了一下JDK9的一些新特性,我们打开JDK官方的下载页会发现只有64位,没有32位了。


哈哈看到上图,意外不意外,惊喜不惊喜!

好了,不废话了直接来看jdk9吧。

jdk9下载和安装

jdk9的下载和安装和以前没有什么区别,下图是运行效果:


标准版的jdk9

What’s New for JVM Tuning in JDK 9,主要看这个,其他的内容可以根据自己的兴趣和爱好看。

改善增加G1Usability, Determinism, and Performance

去掉了jdk8弃用的垃圾回收器组合

下面组合删除

DefNew + CMSParNew + SerialOld
Incremental CMS

foreground的cms gc删除

foreground它发生的场景比如业务线程请求分配内存,但是内存不够了,于是可能触发一次cms gc,这个过程就必须是要等内存分配到了线程才能继续往下面走的,因此整个过程必须是STW的,因此CMS GC整个过程都是暂停应用的,但是为了提高效率,它并不是每个阶段都会走的,只走其中一些阶段,这些省下来的阶段主要是并行阶段,Precleaning、AbortablePreclean,Resizing这几个阶段都不会经历,其中sweep阶段是同步的,但不管怎么说如果走了类似foreground的cms gc,那么整个过程业务线程都是不可用的,效率会影响挺大。
参考:http://mp.weixin.qq.com/s?__biz=MzIzNjI1ODc2OA==&mid=403167528&idx=1&sn=915363f7daaf161c8cf8cd1953d377db&scene=19#wechat_redirect

去掉一些jvm参数

-Xincgc-XX:+CMSIncrementalMode-XX:+UseCMSCompactAtFullCollection-XX:+CMSFullGCsBeforeCompaction-XX:+UseCMSCollectionPassing

UseParNewGC

The command line flag -XX:+UseParNewGC no longer has an effect. ParNew can only be used with CMS and CMS requires ParNew. Thus, the -XX:+UseParNewGC flag has been deprecated and will likely be removed in a future release.

使用G1做为默认回收器

Risks and Assumptions
The change is based on the assumption that limiting latency is often more important than maximizing throughput. If this assumption is incorrect then this change might need to be reconsidered.
G1 is seen as a robust and well-tested collector. It is not expected to have stability problems, but becoming the default collector will increase its visibility and may reveal previously-unknown issues. If a critical issue is found that can't be addressed in the JDK 9 time frame, we will revert back to use Parallel GC as the default for the JDK 9 GA.
The resource usage of G1 is different from Parallel. When resource usage overhead needs to be minimized a collector other than G1 should be used, and after this change the alternate collector will have to be specified explicitly.
与CMS相似,G1更加关注的是延迟效果,如果实际场景更加关注吞吐量还是建议ps,G1已经足够健壮了,可能有未知没预测到的,如果解决不了就默认换会PS。

统一GC日志

Reimplements Garbage Collection (GC) logging using the unified JVM logging framework introduced in JEP 158. GC logging is re-implemented in a manner consistent with the current GC logging format; however, some differences exist between the new and old formats.

废弃CMS

Deprecates the Concurrent Mark Sweep (CMS) garbage collector. A warning message is issued when it is requested on the command line, using the -XX:+UseConcMarkSweepGC option. The Garbage-First (G1) garbage collector is intended to be a replacement for most uses of CMS.
通过上面好多项都可以看见把CMS参数去掉很多,之后一些相关也废弃了,官方可能就是想让G1替代CMS,由于CMS采用的是标记清除,而G1使用的是标记整理所以G1在若干次GC后,不需要类似CMS那样必须进行一次碎片整理。
G1垃圾回收器并没有特别研究就仅仅了解使用标记整理,后面会有空进行学习、分享。

JDK9的关键更改

Java平台模块化系统:引入了一种新的Java编程组件模块,它是一个命名的、自描述的代码和数据集合。

JDK 9中的新工具

  1. Java Shell

  2. 添加更多的诊断命令

  3. 删除启动时间JRE版本选择

  4. link:Java连接器

  5. 多版本兼容Jar

JDK 9中新的安全性:

1、数据报传输层安全性(DTLS)
2、禁用sha - 1证书

想要体验更多的JDK9 的新特性,赶紧去下载吧!

更多精彩内容请关注“IT实战联盟”公众号哦~~~



全部评论: 0

    我有话说:

    Java 14 有了这几个特性,开发直接飞起来!

    内容介绍: Record -- 简化了简单 Java 类的创建。 Pattern Matching -- 简化了 instanceof 。 Switch 表达式 -- 简化了

    JDK11即将来临,特性了解一下

    预计 JDK 11 将于 9 月 25 日正式发布,可用于正常使用。

    Eclipse OpenJ9 v0.23.0 发布,Java 虚拟机

    Eclipse OpenJ9 v0.23.0 已发布,Eclipse OpenJ9 是 OpenJDK 的 JVM,此 Java 虚拟机经过优化,具备占用空间小、启动速度快以及吞吐量高等优势。

    JDK 16 即将发布,特性速览!

    来源:CSDN资讯 blog.csdn.net/csdnnews/article/details/110483909 你还能追上 Java 的更新速度吗? 当开发者深陷 Java

    Java Web实战:发布和运维必备的12条Linux命令

    作为一名Java起步的从业人员,学会一些常用的Linux命令是必须的。

    Java Web实战-轻松提高千万级数据库查询效率

    通过优化数据库设计、java后台和数据库优化达到提高千万级数据查询的效率。

    精品推荐:Java核心数据结构(List,Map,Set)使用技巧与优化

    JDK提供了一组主要的数据结构实现,如List、Map、Set等常用数据结构。这些数据都继承自 java.util.Collection 接口,并位于 java.util 包内。

    JAVA实现附近范围内公交定位问题

    接上【前端实战:通过JS抓取城市所有站点与线路】获取附近定位信息

    Java Web实战-代码之美

    代码之美-小小的优化让你的代码Bug更少,执行效率更高

    Spring Boot 2.1.0特性 ,准备好了吗?!

    Spring Boot官方在10月30号正式发布了v2.1.0.RELEASE版本,由于本人最近比较忙,直到今天才着重抽空学习和了解这次升级一共带来了9特性,根据官方描述,正在逐渐支持 java

    Java Web实战:增强for循环实现原理及for循环实战性能优化

    Iterator是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator被创建之后会建立一个指向原来对象的单链索引表......

    GitHub精选:2018年11月份最热门的Java开源项目

    又到了揭晓 11 月份最热门 Java 开源项目排名的时候了,在本月的名单中,出现了几个面孔,如Java 核心知识库、轻量级容错组件Resilience4j .....

    Google 宣布正式开源 Jib ,帮助 Java 应用快速容器化

    Google 本周宣布开源一款Java 工具 Jib ,旨在让开发者使用他们熟悉的工具更轻松地将 Java 应用程序容器化。

    Google发布Java 核心工具库——Guava 28.0

    Guava是一种基于开源的Java库,其中包含谷歌正在由他们很多项目使用的很多核心库。这个库是为了方便编码,并减少编码错误。这个库提供用于集合,缓存,支持原语,并发性,常见注解,字符串处理,I/O和

    Java Web架构实战:聊一聊前后端分离架构

    RESTful思想和Json数据标准的出现,使得这种交互日益便利。Vue.js 用于构建用户界面的渐进式框架

    蚂蚁金服 Java RPC 开源框架—SOFARPC

    SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。

    微信开发神器全能微信Java开发工具包

    必须分享的微信神器 weixin-java-tools