-
- 2011年,
JDK7
发布,1.7u4中,开始启用新的垃圾回收器G1
(但是不是默认)。
- 2011年,
-
- 2017年,发布
JDK9
,G1
成为默认GC
,代替CMS
。(一般公司使用jdk8
的时候,会通过参数,指定GC
为G1
)
- 2017年,发布
-
- 2018年,发布
JDK11
,带来了革命性ZGC
,性能比较强。
- 2018年,发布
虚拟机介绍
虚拟机,就是虚拟的计算机,可以执行一系列虚拟计算机指令,大体上可以分为系统虚拟机和程序虚拟机。它们运行时,都会受到虚拟机提供的资源的限制。
- 系统虚拟机:仿真模拟系统的,比如
Visual Box
,VMware
。 - 程序虚拟机:为执行单个计算机程序设计的,比如
Java
虚拟机。
JAVA虚拟机
Java
虚拟机是一台执行字节码的虚拟机计算机,但是字节码不一定是由Java
语言编译而成。但是只要使用这一套虚拟机规则的语言,就可以享受到跨平台,垃圾收集以及可靠的即时编译器。JVM
和硬件之间没有直接的交互。
- 一次编译,到处运行。
- 自动内存管理
- 自动垃圾回收
下面是ava平台文档中Java概念图的描述,可以看出javac
命令在JDK
中,也就是将.java
文件编译成为.class
文件,这个就是前端编译器,将源文件编译成为字节码。这个编译器不在JRE
中,也说明了JRE
不包括编译环境。
JRE和JDK都包括了JVM虚拟机。JRE是运行时环境,而JDK包含了开发环境。
JDK7 中java家族的结构组成 : https://docs.oracle.com/javase/7/docs/
JDK7 中java家族的结构组成 : https://docs.oracle.com/javase/8/docs/