# 半编译、半解释型语言

  1. 解释:字节码执行一句,需要现场将这一句字节码解释成机器码,让CPU执行
  2. 编译:将字节码直接全翻译成机器码,程序调用哪个字节码直接调机器码,让CPU执行,不现场翻译了

解释器负责的就是解释的工作,JIT做的就是编译的工作

当虚拟机启动时,解释器先开始工作,JIT负责嗅探热点代码,将热点代码编译成机器码缓存,加快程序相应,这也就是为什么Hotspot虚拟机名字的由来

# 预热?

Java应用程序最好让它运行一会儿才会达到最佳性能,而不是一开启就会达到最佳性能,因为JIT编译器需要动态嗅探分析