Java是解释执行吗?

Java是解释执行吗?

并不完全是,我们编写的Java代码,首先通过javac编译成字节码,然后在运行时被JVM内嵌的解释器将字节码逐行解释为机器码。但是每次都逐行解释效率非常低,所以JVM提供了JIT编译器,用于将热点代码直接编译成机器码并缓存,后续直接调用而不需要再次编译或解释。那么对于部分热点代码就是编译执行了,剩下的非热点代码依旧还是解释执行。

动态编译–JIT编译器

原理

JIT工作原理

对于Java代码,刚开始都是被编译器编译成字节码文件,然后字节码文件会被交给JVM解释执行,而JIT编译技术会将运行频率很高的字节码直接编译成机器指令以提高性能。

server模式和client模式

JIT编译器在运行时有两种模式,server模式相对于client模式来说,启动时速度较慢,但是一旦运行起来,性能会有很大提升。原因是client模式使用的是C1轻量级编译器,而server模式启动的是C2重量级编译器,C2比C1编译的更加彻底,所以启动较慢,但是启动后性能更好。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×