西河刘卡车医 发表于 2024-11-24 17:49:00

jvm发展历程先容

https://img-blog.csdnimg.cn/274b95a5d40b4b63a49c1d39ca0f3f2b.jpg
 
 
初始阶段: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。这些新的垃圾回收器在保持低延迟的同时,提供了更高的吞吐量和更大的堆内存支持。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: jvm发展历程先容