JVM自学笔记
字节码和机器码的区别:
机器码是给cpu读取运行的,速度快,但是难懂。
字节码是一种二进制的中间码,需要JVM翻译成机器码。
JDK、JRE、JVM
JDK:包含JRE和编译器等工具
JRE:是包含运行类库和JVM
JVM: 是虚拟机,Java正是基于JVM才实现了跨平台编译
openJDK和OracleJDK的区别,简单地说就是OpenJDK是sun公司公开免费的,而OracleJDK是收购sun公司以后的收费版本,两者差别并不大。
jvm和Hostpot的关系,严格来说JVM只是一种虚拟机规范,而Hostpot才是基于这个规范产生的商用产品,也就是咱们口头上的JVM
JVM和JAVA的关系:
Java代码那编译以后通过JDK生成字节码,字节码通过JVM生成机器码
JVM的运行模式:
Server模式:启动慢,但是优化的好,执行效率更高
Client模式:启动快,优化的差一些,执行效率低一些
基本上终端是Client模式,而服务端是Server模式
JVM的架构
JVM程序执行流程
编译器和解释器的协调工作流程
java虚拟机一开始是通过解释器进行解释的执行,后来有JIT编译器是用于那些频繁调用的代码或者代码块,便于提高效率。你可以理解为提前解释好了,用的时候拿来就用。
JIT 的编译方式是动态编译,就是运行的时候进行编译, 而相对的,在事前编译就是静态编译。