半编译、半解释型语言
- 解释:字节码执行一句,需要现场将这一句字节码解释成机器码,让CPU执行
- 编译:将字节码直接全翻译成机器码,程序调用哪个字节码直接调机器码,让CPU执行,不现场翻译了
解释器负责的就是解释的工作,JIT做的就是编译的工作
当虚拟机启动时,解释器先开始工作,JIT负责嗅探热点代码,将热点代码编译成机器码缓存,加快程序相应,这也就是为什么Hotspot虚拟机名字的由来
预热?
Java应用程序最好让它运行一会儿才会达到最佳性能,而不是一开启就会达到最佳性能,因为JIT编译器需要动态嗅探分析