Java代码在虚拟机中运行,为什么要在虚拟机中运行呢?
    在虚拟机中运行提供了可移植性,java代码被编译为java字节码之后,就可以在任何平台的java虚拟机中运行了。jvm还提供了一个代码托管环境,代替我们处理部分冗长且容易出错的事务,例如内存管理。
    JVM将运行时内存区域划分为五个部分。方法区、堆、PC寄存器、Java方法栈和本地方法栈。java代码编译之后的class文件需要先加载至方法区,才能在JVM中运行。
    为了提高运行效率,标准JDK中的HotSpot虚拟机采用的是一种混合执行的策略。它会解释执行Java字节码,然后会将其中反复执行的热点代码以方法为单位进行即时编译,翻译成机器码之后直接运行在底层硬件上。
    HotSpot装载了多个不同的即时编译器,以便在编译时间和生成代码的执行效率之间做取舍。