jdk1.8新特性

Python09

jdk1.8新特性,第1张

Java8(又称为jdk1.8)是Java语言开发迄今为止的一个最主要和用户最多的一个版本。

Java8是Oracle公司于2014年3月18日发布,它不仅支持函数式编程,而且还拥有新的日期API,StreamAPI等操作,下面胖虎带领大家一探究竟Java8的一些新特性。

ava8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等操作。

java8添加了接口的默认方法,简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现的方法。

-Xss :线程栈空间

-Xms : 初始堆空间,如: -Xms512M

-Xmx : 最大堆空间,如: -Xmx512M

-XX:MinHeapFreeRatio : 堆空间最小空闲比,当堆空间空闲内存小于这个数值时,JVM会扩展堆空间。

-XX:MaxHeapFreeRatio : 堆空间最大空闲比,当堆空间空闲内存大于这个数值时,JVM会压缩堆空间,得到一个较小的堆。

-XX:NewSize : 新生代初始空间

-XX:MaxNewSize : 最大新生代空间

-Xmn : 相当于设置相同的 -XX:NewSize 和 -XX:MaxNewSize .

-XX:SurvivorRatio : 新生代中eden空间和s0空间的比例

-XX:TargetSurvivorRatio : survivor区的可使用率,当survivor区的空间使用率达到这个数值时,会将对象送入老年代。

-XX:NewRatio : 老年代 / 新生代的空间比例

-XX:MetaspaceSize=512m : 分配给类元数据空间的初始大小,以bytes为单位,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当的降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize(如果设置了的话),适当的提高该值。

-XX:MaxMetaspaceSize=512m : 分配给类元数据空间的最大值, 超过此值就会触发Full GC. 此值仅受限于系统内存的大小, JVM会动态地改变此值

-XX:MinMetaspaceFreeRatio ,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为class metadata分配空间导致的垃圾收集。

-XX:MaxMetaspaceFreeRatio ,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为class metadata释放空间导致的垃圾收集。

-XX:CompressedClassSpaceSize=512m : 类指针压缩空间大小, 默认为1G

-XX:+PrintGCDetails : 打印GC细节

-XX:+PrintGC :

-XX:+PrintGCTimeStamps :

-XX:+PrintHeapAtGC :

Java 8 以前的JVM内存结构图:

其中:

虚拟机栈 在运行时使用 栈帧 保存上下文,栈帧中存储了以下内容:

更为精细地, 方法区 的结构如下:

分为 新生代 老年代 .

新生代 分为 Eden区 s0区(survivor space0或from space) s1区(survivor space1或to space)

大部分新创建的对象进入Eden区,幸存区s0区和s1区存放经历了至少一次GC的“幸存者”。如果幸存区中的对象到了指定年龄仍未被回收,则有机会进入 老年代(tenured)

对于习惯了HotSpot虚拟机的程序员来说,很多都愿意将 方法区 称作 永久代 。本质上来讲两者并不等价,仅因为Hotspot将GC分代扩展至方法区,或者说使用永久代来实现方法区。在其他虚拟机上是没有永久代的概念的。也就是说方法区是Java虚拟机规范,永久代是Hotspot针对该规范进行的实现。

方法区 都是被JVM中所有线程共享的。

Java 8以后的JVM内存结构图:

Java8中,Hotspot取消了永久代,永久代的参数 -XX:PermSize 和 -XX:MaxPermSize 也随之失效。

对于Java8,HotSpots取消了永久代,是不是就没有方法区了呢?当然不是,方法区只是一个规范,只不过它的实现变了。

在Java8中, 方法区存在于元空间(Metaspace) 。同时,元空间不再与堆连续,而且是存在于本地内存(Native memory)。

本地内存(Native memory) ,也称为 C-Heap ,是供JVM自身进程使用的。当Java Heap空间不足时会触发GC,但本地内存空间不够却不会触发GC。

元空间存在于本地内存,意味着只要本地内存足够,它不会出现像永久代中 java.lang.OutOfMemoryError: PermGen space 这种错误。默认情况下元空间是可以无限使用本地内存的,但JVM同样提供了参数 -XX:MaxMetaspaceSize 来限制它使用的空间。

海鱼小说

冰川小说

安卓软件

用户中心

关于本站

Java SE Development Kit 8 (JDK) v8.0.351

2022年10月19日 开发工具, 运行库

甲骨文公司Oracle Java Development Kit(JDK)是一款Java开发工具包,包含Java运行环境(java运行库),Java开发套件和Java基础类库源代码.Java Runtime Environment(JRE)是运行Java程序的运行环境,不管是做Java开发还是从事安卓开发,都必须在系统安装JRE运行环境.Java语言的贡献力量是其他任何技术无可比拟的.

新版变化

2022年10月18日 JDK 8u351 Update 发行说明

Java™ SE Development Kit 8, Update 351 (JDK 8u351)

https://pan.baidu.com/s/1ZtDZYZGlz69ikS4vsHAp3Q

[JDK] Java SE Development Kit 稳定版官方下载页面(需注册登陆)

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

[JRE] Java Runtime Environment 稳定版官方下载页面(需注册登陆)

https://java.com/en/download/manual.jsp