JVM是Java Virtual Machine(Java虚拟机)的缩写,是一种虚构出来的规范
- 和java没有直接关系
- 只运行class文件
- 两种运行模式client和server模式
- client模式 运行GUI Java桌面程序
编译成机器码,直接可以被CPU执行的命令
JIT编译是其中一种,运行时执行,可以将热点代码进行动态即时编译,编译之后的内容,放入方法区
动态编译通常指的是运行时将所有的代码都编译,JIT编译只是将部分代码进行编译(热点代码)
JMV有解析器,作用就是按照字节码指令进行逐行解析,逐行执行,每一次执行方法,都需要进行解析执行
程序中的代码只有热点代码时,才会编译为本地代码
运行过程中会被即时编译器编译的“热点代码”有两类:
- 被多次调用的方法
- 被多次执行的循环体
以方法为单位,Client模式1500次,Server模式10000次才会被定义为热点代码
- 基于采样的热点探测
- 基于计数器的热点探测
