jvm发展历程介绍

初始阶段:JDK 1.0 - JDK 1.1

• 经典JVM:这是JVM的早期实现,主要特点是使用解释器(Interpreter)来逐行解释执行Java字节码。这种方式虽然简单直接,但执行效率相对较低。

• JIT编译器(Just-In-Time Compiler):为了提高执行效率,JVM引入了JIT编译器。JIT编译器能够在运行时将热点代码(即频繁执行的代码)编译成机器码,从而大大提高执行速度。不过,在JDK 1.1中,JIT编译器还是相对初级的。

成长阶段:JDK 1.2 - JDK 1.4

• 精确垃圾回收(Accurate Garbage Collection):在这个阶段,JVM的垃圾回收机制得到了显著的改进。之前的垃圾回收算法可能无法准确判断对象的生命周期,导致内存泄漏或不必要的内存占用。而精确垃圾回收能够更准确地识别并回收不再使用的对象。

• Class Data Sharing(CDS):CDS机制允许多个JVM实例共享类元数据,从而减少了内存占用和启动时间。

• HotSpot JVM:在这个阶段,HotSpot JVM逐渐成为主流。HotSpot JVM不仅包含了JIT编译器,还引入了自适应优化(Adaptive Optimization)等技术,能够根据程序的运行情况动态调整优化策略。

成熟阶段:JDK 5.0 - JDK 8

• Java内存模型(Java Memory Model, JMM):为了规范多线程编程中的内存访问行为,JVM引入了Java内存模型。JMM定义了变量如何从主内存传输到工作内存,以及如何在不同的线程之间同步这些变量的值。

• Java类加载机制(Class Loading Mechanism):在JDK 5.0及之后的版本中,JVM的类加载机制得到了进一步的完善。双亲委派模型(Parent Delegation Model)成为类加载的默认策略,它确保了Java平台的稳定性和安全性。

• 垃圾回收算法改进:在这个阶段,JVM的垃圾回收算法得到了不断的改进和优化。例如,G1(Garbage-First)垃圾回收器就是在JDK 7中引入的,并在JDK 8中得到了进一步的完善。G1垃圾回收器采用了分区(Region)的概念,能够根据应用的实际情况动态调整堆内存的使用情况,从而提高了垃圾回收的效率和性能。

新特性阶段:JDK 9 及以后

• 模块系统(Module System):在JDK 9中,JVM引入了模块系统(Jigsaw Project),以更好地支持模块化开发和部署。模块系统允许开发者将应用程序拆分成多个独立的模块,每个模块都包含了自己的代码、资源和依赖关系。

• AOT编译(Ahead-Of-Time Compilation):与JIT编译不同,AOT编译是在程序运行之前就将Java字节码编译成机器码。这种方式可以减少程序运行时的编译开销,提高启动速度和执行效率。不过,AOT编译也面临着一些挑战,比如如何准确地预测哪些代码会被执行、如何处理动态生成的代码等。

• ZGC和Shenandoah GC:在JDK 11及之后的版本中,JVM引入了新的垃圾回收器ZGC和Shenandoah GC。这些新的垃圾回收器在保持低延迟的同时,提供了更高的吞吐量和更大的堆内存支持。

相关推荐
李长渊哦6 小时前
Java 虚拟机(JVM)方法区详解
java·开发语言·jvm
二十七剑12 小时前
jvm中各个参数的理解
java·jvm
七禾页话15 小时前
垃圾回收知识点
java·开发语言·jvm
小梁不秃捏1 天前
深入浅出Java虚拟机(JVM)核心原理
java·开发语言·jvm
xiaolingting2 天前
JVM层面的JAVA类和实例(Klass-OOP)
java·jvm·oop·klass·instanceklass·class对象
神仙别闹2 天前
基于Python+Sqlite实现的选课系统
jvm·python·sqlite
上分小子2.02 天前
jvm-Java虚拟机
java·开发语言·jvm
5xidixi2 天前
JAVA EE初阶 JVM
java·jvm·java-ee
北城以南没有天2 天前
排查JVM的一些命令
jvm
BUG研究员_2 天前
JVM深入理解
java·jvm·学习