Java语言写的源程序通过Java编译器,编译成与平台无关
的字节码程序
(.class文件,也就是0,1二进制程序),然后在OS之上的Java解释器
中解释执行,而JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。
注:JVM(java虚拟机)包括解释器,不同的JDK虚拟机是相同的,解释器不同。
- JVM执行程序的过程:
加载.class文件
->管理并分配内存
->执行垃圾收集
注:JRE(java运行时环境)由JVM构造的java程序的运行环境
image.png- JIT:
Java程序最初是仅仅通过解释器解释执行的,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行的特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器(即时编译器)
,当虚拟机发现某个方法或代码块运行特别频繁时,就会把这些代码认定为Hot Spot Code(热点代码)
,为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各层次的优化,完成这项任务的正是JIT编译器。
二者各有优势:当程序需要迅速启动和执行时,解释器可以首先发挥作用,省去编译的时间,立即执行;当程序运行后,随着时间的推移,编译器逐渐会返回作用,把越来越多的代码编译成本地代码后,可以获取更高的执行效率。解释执行可以节约内存,而编译执行可以提升效率。
网友评论