今天去看了一下jvm的机制, 在B站上看一个叫程序员诸葛
讲的8月最新java虚拟机JVM运行机制讲解视频全集
目前学到第6p, 会一点一点的将老师讲的课, 和在听课过程中记得笔记分享上来。 这篇博客的内容主要是jvm的结构,将画出示意图。
假设目前代码是这个亚子。
public class Main {
public static void main(String[] args) {
Main main = new Main();
main.calculate();
}
public int calculate(){
int a = 2;
int b = 4;
int c = (2 + 4) * 5;
return c;
}
}
众所周知, java执行时,并非直接运行.java文件。 而是先翻译成.class文件,再将.class加入到jvm中执行。
jvm分为哪几块呢, 并非仅仅是我们常说的堆、栈这些。 而是分为类装载子系统, 运行时数据区, 执行引擎三个部分。
如图,在执行一个Math.class时, 先由类加载子系统将该文件加载到jvm的运行时数据区(后称内存区)中的方法区中。完成装载后,再由字节码装载引擎执行代码。