初识JVM虚拟机
1. Java虚拟机简介
JVM全称是Java Virtual Machine,中文译名Java虚拟机。JVM本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。
2. JVM的功能
2.1 解释和运行
对字节码文件中的指令,实时的解释成机器码,让计算机执行。
2.2 内存管理
自动为对象、方法等分配内存; 自动的垃圾回收机制,回收不再使用的对象
2.3 即时编译
对热点代码进行优化,提升执行效率
提示
Java即时编译是为了支持跨平台特性,JVM提供了即时编译(Just-In-Time 简称JIT)进行性能的优化,最终能达到接近C、C++语言的运行性能。
3. 常见的JVM
3.1 HotSpot
使用最广泛,稳定可靠,社区活跃, JIT支持, OracleJDK和OpenJDK默认虚拟机
3.2 GraalVM
多语言支持, 高性能、JIT、AOT支持
3.3 龙井
Dragonwell JDK中的内置虚拟机,高性能、bug修复、安全性提升JWarmup、ElasticHeap、Wisp特性支持
3.4 Eclipse OpenJ9
高性能、可扩展, JIT、AOT特性支持
4. JVM的组成
JVM包括类加载器,运行时数据区,执行引擎(即时编译器、解释器、垃圾回收器等),本地方法接口
5. Java发展历程
2000年,JDK 1.3发布,Java HotSpot Virtual Machine正式发布,成为Java的默认虚拟机。
2002年,JDK 1.4发布,古老的Classic虚拟机退出历史舞台。
2003年年底,Java平台的Scala正式发布,同年Groovy也加入了Java阵营。
2006年,JDK 6发布。同年,Java开源并建立了OpenJDK。顺理成章,Hotspot虚拟机也成为了 OpenJDK中的默认虚拟机。
2007年,Java平台迎来了新伙伴Clojure。
2008 年,Oracle收购了BEA,得到了JRockit虚拟机。
2009年,Twitter宣布把后台大部分程序从Ruby迁移到Scala,这是Java平台的又一次大规模应用。
2010年,Oracle收购了Sun,获得Java商标和最具价值的HotSpot虚拟机。此时,Oracle拥有市场占用率最高的两款虚拟机HotSpot和JRockit,并计划在未来对它们进行整合;
2011年,JDK7发布。在JDK 1.7u4中,正式启用了新的垃圾回收器G1。
2017年,JDK9发布。将G1设置为默认GC,替代CMS (被标记为Deprecated), 同年IBM的J9开源,形成了现在的Open J9社区
2018年,Android的Java侵权案判决,Google赔偿Oracle计88亿美元。同年,JDK11发布,LTS版本的JDK,发布革命性的ZGC,调整JDK授权许可
2019年,JDK12发布,加入RedHat领导开发的Shenandoah GC