JVM整体结构和内存模型
JVM有三块组成: 类装载子系统, 运行时数据区(内存模型) , 字节码执行引擎
?
其中类装载子系统是C++实现的, 他把类加载进来,放入到虚拟机中....然后, 字节码执行引擎去虚拟机中读取数据. 字节码执行引擎也是c++实现的. 我们重点研究运行时数据区
运行时数据区主要由5个部分构成: 堆, 栈, 本地方法栈, 方法区, 程序计数器....第一步: 类加载子系统加载Math.class类, 然后将其丢到内存区域, 这个就是前面博客研究的部分,类加载的过程, 我们看源码也发现,里面好多代码都是native本地的, 是c++实现的
第二步:...在内存中处理字节码文件, 这一部分内容较多, 也是我们研究的重点, 后面会对每一个部分详细说
第三步: 由字节码执行引擎执行java虚拟机中的内存代码, 而字节码执行引擎也是由c++实现的
这里最核心的部分是第二部分运行时数据区...后加载的方法会被先执行.
4.2 栈帧的内部构成
我们上面说了, 每个方法在运行的时候都会有一块对应的栈帧空间, 那么栈帧空间内部的结构是怎样的呢?