什么是java虚拟机?
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
为什么要学习jvm?
- 写出更好,更健壮的java代码
- 提升java程序的性能,排除问题
- 面试必问
虚拟机的种类
Sun Classic VM
- 第一款商用Java虚拟机,Sun/Oracle公司出品,不支持解释、编译同时执行,所以运行速率很慢
Exact VM
- 现代高性能JVM的雏形,Sun/Oracle公司出品,其特点是支持解释、编译混合工作模式,同时Exact VM采用准确式内存管理,即可以很清晰知道内存存储的数据是什么类型,大大提升了内存回收的效率。比Classic VM先进很多,但是很快被HotSpot VM所取代
HotSpot VM
- Sun/Oracle公司出品,目前使用范围最广的Java 虚拟机,特点正如其名称"热点代码探测功能",这项能力,可以通过执行计数器,找出最具有编译价值的代码,然后通知JIT编译器进行编译,通过编译器和解释器的协同合作,在最优程序响应时间和最佳执行性能中取得平衡。是目前市面上使用最广泛的虚拟机
JRockit
- BEA公司出品,后被Oracle收购。JRockit和HotSpot与J9一起并称三大主流JVM。三个jvm的性能水平基本都在一个水平上。但是自从Oracle连Sun公司都收购了之后,由于Java SE JVM只能二选一,而Oracle选择了Sun的HotSpot VM,所以JRockit就成了炮灰了。
J9 VM
- IBM公司出品,性能和HotSpot不相上下,有的地方J9快一些,有的地方HotSpot快一些;在许多平台上,IBM J9 VM都只能跟IBM产品一起使用。这不是技术限制,而是许可证限制。例如说在Windows上IBM JDK不是免费公开的,而是要跟IBM其它产品一起捆绑发布的;使用IBM Rational、IBM WebSphere的话都有机会用到J9 VM(也可以自己选择配置使用别的Java SE JVM)。
除了以上历史上比较经典的JVM,还有很多其他优秀的JVM, Sun/Oracle公司的Mobile系列、Liquid VM、Google Android Dalvik VM、Apache Harmony、Microsoft JVM等等