美文网首页
初识Java虚拟机

初识Java虚拟机

作者: 时刻准备着o | 来源:发表于2020-05-21 16:10 被阅读0次

1.什么是Java虚拟机

Java虚拟机(JVM是运行Java字节码的虚拟机)。JVM有针对不用系统的特定实现(Windos,Linux,macOS),目的使用相同的字节码,它们都会给出相同的结果。

2.什么是字节码?采用字节码的好处是什么?

在Java中,JVM可以理解的代码就叫字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。

当然,最大的好出应该就是一次编译,处处运行

3.从.java文件到.class文件到运行

一般我们在使用IDE工具时都是执行的编译并运行


相信各位小伙伴在初学Java时肯定执行过这两个命令,这里不作解释(不过在Java11中一个命令就可以搞定)。

java
javac

我们需要格外注意的是.class→机器指令这一步。在这一步JVM类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些地方和代码块是经常需要被调用的(热点代码),所以后面引进了JIT编译器,而JIT属于运行时编译。当JIT编译器完成第一次编译后,其会将字节码对应的机器指令缓存起来,下次可以直接使用。而我们知道,机器指令的运行效率肯定是要高于Java解释器的。这也解释了Java是编译与解释共存的语言。

4.三大主流商业虚拟机

  • Sun HotSpot

1.提起HotSpot VM,相信所有Java程序员都知道,它是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机
2.在2006年的JavaOne大会上,Sun公司宣布最终会把Java开源,并在随后的一年,陆续将JDK的各个部分(其中当然也包括了HotSpot VM)在GPL协议下公开了源码, 并在此基础上建立了OpenJDK。这样,HotSpot VM便成为了Sun JDK和OpenJDK两个实现极度接近的JDK项目的共同虚拟机。
3.在2008年和2009年,Oracle公司分别收购了BEA公司和Sun公司,这样Oracle就同时拥有了两款优秀的Java虚拟机:JRockit VM和HotSpot VM。 Oracle公司宣布在不久的将来(大约应在发布JDK 8的时候)会完成这两款虚拟机的整合工作,使之优势互补。 整合的方式大致上是在HotSpot的基础上,移植JRockit的优秀特性,譬如使用JRockit的垃圾回收器与MissionControl服务, 使用HotSpot的JIT编译器与混合的运行时系统

  • BEA JRocket

1.专注于服务端应用(JRockit内部不包含解析器实现,全部代码都靠即时编译器编译后执行)
2.Jrockit JVM 是世界上最快的jvm
3.2008年被oracle收购

  • IBM J9

1.市场定位与hotspot接近,服务器端,桌面应用,嵌入式等
2.目前,是影响力的三大商业虚拟机之一

5.总结

简单介绍了一下JVM,打完收工!

相关文章

网友评论

      本文标题:初识Java虚拟机

      本文链接:https://www.haomeiwen.com/subject/kzfzohtx.html