JVM的知识也算是看了好几天了,也写了几篇博客了,那怎么今天才说入门呢?因为,我今天猛然醒悟,之前的路子走错了。
JVM,全称 java virtual machine ,也就是虚拟机,说到虚拟机就不禁让人想起了VMware。提到VMware就让人不经想到了真实的计算机,再进一步,就会想到现代PC都在用的冯诺伊曼结构。
JVM中的很多概念,诸如类加载机制,内存模型等等乱七八糟的东西,这些一旦和冯诺伊曼结构联系起来,再加以理解的话,我觉得很多东西就明了了很多了。
上一张冯诺伊曼结构图和一张JVM结构图:
![](https://i-blog.csdnimg.cn/blog_migrate/0316db2dfeb82d7c160ca42d53f72469.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2d9f1d71a47c9ae6eadfdb2b0cc26996.png)
都知道,java代码会编译成字节码,然后在JVM中执行,那具体是怎么执行的呢?
这里有两种方法,一种是JVM直接解释执行,优点是启动快,但是效率很低。
一种是JIT编译器( just-in-time 即时编译器 ),将字节码转换为机器码,虽然效率高,但是启动慢。
真实情况是两种方式混用。
参考文献:
JVM基础系列第4讲:从源代码到机器码,发生了什么?
这篇文章讲的是真的好,通俗易懂,又干货满满,强推。