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。这些新的垃圾回收器在保持低延迟的同时,提供了更高的吞吐量和更大的堆内存支持。

相关推荐
秋邱17 小时前
驾驭数据洪流:Python如何赋能您的数据思维与决策飞跃
jvm·算法·云原生·oracle·eureka·数据分析·推荐算法
HappRobot20 小时前
WebLogic服务器的JVM参数调整
服务器·jvm·chrome
那我掉的头发算什么1 天前
【javaEE】多线程进阶--CAS与原子类
android·java·jvm·java-ee·intellij-idea
q***69771 天前
java进阶1——JVM
java·开发语言·jvm
码力码力我爱你1 天前
C++静态变量依赖关系
java·jvm·c++
Java爱好狂.2 天前
2025全年Java面试真题总结!
java·jvm·高并发·多线程·java面试·后端开发·java八股文
嘟嘟w2 天前
JVM(Java 虚拟机):核心原理、内存模型与调优实践
java·开发语言·jvm
G皮T2 天前
【Java】Java 运行时数据区域(一):名词概念
java·jvm·runtime·运行时·运行时数据区域
小年糕是糕手2 天前
【C++】C++入门 -- inline、nullptr
linux·开发语言·jvm·数据结构·c++·算法·排序算法
七夜zippoe2 天前
JVM调优实战:从GC日志分析到参数配置(Xmx, Xms, XX:+)
java·jvm·gc·jit·垃圾回收器