jvm有两种执行方式,一种是解释执行,就是临时把字节码翻译成本地码再执行,另一种是固化执行,就是第一次执行字节码吧字节码解释成本地码然后保存本地码,以后不再解释字节码而直接执行本地吗。
两种方式各有优劣,第一种效率比较慢,但是节省磁盘与内存空间,对于一些内存与磁盘小的平台,如手机或者小型的电子仪器,他们没有足够的内存和磁盘;第二种执行效率快,但是比较消耗内存以及磁盘资源,对于磁盘以及内存资源充足的机器,就可以这样执行来提高程序运行速度。虚拟机规范没有规定一定要用哪种,看jvm实现这自己决定,jvm要根据具体的环境来设计,并没有那种一定好,哪种一定坏的设计。现在sun公司所实现的大家都公用的jdk实现方式是即支持解释执行也支持固化执行的虚拟机,虚拟机会根据程序代码的使用平凡性来确定是否为解释执行还是固化执行,不怎么使用的代码就解释执行,如果某些代码平凡使用,虚拟机就会将其固化成本地代码
两种方式各有优劣,第一种效率比较慢,但是节省磁盘与内存空间,对于一些内存与磁盘小的平台,如手机或者小型的电子仪器,他们没有足够的内存和磁盘;第二种执行效率快,但是比较消耗内存以及磁盘资源,对于磁盘以及内存资源充足的机器,就可以这样执行来提高程序运行速度。虚拟机规范没有规定一定要用哪种,看jvm实现这自己决定,jvm要根据具体的环境来设计,并没有那种一定好,哪种一定坏的设计。现在sun公司所实现的大家都公用的jdk实现方式是即支持解释执行也支持固化执行的虚拟机,虚拟机会根据程序代码的使用平凡性来确定是否为解释执行还是固化执行,不怎么使用的代码就解释执行,如果某些代码平凡使用,虚拟机就会将其固化成本地代码