java虚拟机

来源:互联网 发布:大数据总监 编辑:程序博客网 时间:2024/06/04 19:11
目前有不同厂商或机构开发的java虚拟机实现。所有这些实现都遵守java虚拟机规范,但是说适应的情况有所不同。java SE 7 的OpenJDK使用的是Oracle的HotSpot虚拟机。HotSpot虚拟机从JDK1.3开始是Sun提供的默认虚拟机实现。大部分开发人员在使用Java SE7时默认使用的虚拟机。

java语言的源代码在经过java编译器编译之后,被转换成java字节码。虚拟机在执行字节码时一般采用的是即时编译的方式,所谓Just-in-time(JIT)编译方式。虚拟机会在运行过程中把字节码中的指令直接转换成底层操作系统平台上的原生指令。由于虚拟机所理解的知识java字节码格式,因此这样的转换是必须的。不过JIT编译方式有一些性能方面的问题,会降低程序的执行效率。HotSpot虚拟机采用了自适应的优化技术来解决JIT编译方式的性能问题。这项优化技术的关键是利用程序运行中的热点(Hot pot),这也是HotSpot虚拟机的名称由来。

程序运行过程中的一个重要特征是程序局部性,即在程序运行的过程中。小部分代码会占用比较多的运行时间。这一小部分代码被称为程序运行中的热点。这也是82原则的体现,程序中20%的代码会占用80%的运行时间。如果把这些重要的20%的代码的优化工作做好,就可以节省大量的时间。在程序刚开始运行的时候,HotSpot虚拟机会分析程序的字节代码,以找出其中的热点,并对这些热点进行复杂的优化工作。随着程序的运行,其中的热点的好处在于不许要对程序中所有的代码都进行复杂的优化,这样可以把时间用在对比较重要的代码的优化上。减少代码优化的时间开销。  
原创粉丝点击