jvm的基本结构图如下
这只是代表我的个人理解 不是很深刻 欢迎各类大神进行补充和纠正
jvm之所以强大就是因为他从软件层面屏蔽不用操作系统在底层硬件与指令上的区别,从而可以在不同系统上兼容
主要说一下线程中的几个组件
每运行一个方法,分配一块独立的内存空间就是栈帧
局部变量表从字面意思上就知道 他是存放着局部变量的一块内存空间 例如在方法中int a =1; 他存放的就是a这个局部变量
操作数栈就是存放操作数临时的内存空间(!!临时存放是因为 他的操作数永远都是指向堆的),堆就是存放对象的很大的一块内存空间
动态链接太难理解 以后再补充
方法出口 就是你运行一个方法之后 这个方法应该回到的位置 通俗一点讲就是记录回到哪一行哪一列的数据
例如 public int compute(){}
public static void main(String[] arg){
Math math = new Math();
math.compute(); 运行完compute()方法之后,就必须回到这里 这就是方法出口做的事情
}
程序计数器和方法出口差不多 但是程序技术器记录的是代码运行完之后需要回到的位置