jvm模型
2022-01-04 18:43:49 0 举报
jvm模型以及对应某块说明
作者其他创作
大纲/内容
链接阶段
扩展类加载器
sur1
中间代码生成器
验证
堆
分析器
sur0
class的数据结构
栈帧
本地方法库:由C/C++写的一些与操作系统交互方法库
线程2的PC寄存器
一些附加信息
解析
PC寄存器:JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟。用来存储指向下一条指令的地址,也即将要执行的指令代码,不会发生异常,但栈会内存溢出。每个线程都有它自己的程序计数器,线程私有。
LV OS DL RA
线程1的PC寄存器
加载阶段
线程2
即时编译器
Eden
线程n的PC寄存器
方法区(元空间)
类加载器子系统
代码优化器
局部变量:定义为一个数字数组,主要用于存储方法参数和定义在方法体内的局部变量,不存在数据安全问题,局部变量【会影响栈帧的大小】中的变量只在当前方法调用中有效。当方法调用结束后,随着方法栈帧的销毁,局部变量表也会随之销毁。操作数栈:在方法执行过程中,根据字节码指令,往栈中写入数据或提取数据,即入栈(push) /出栈(pop)。主要用于保存计算过程的中间结果,同时作为计算过程中变量临时的存储空间。动态链接:为了将这些符号引用转换为调用方法的直接引用。方法返回地址:调用者的pc计数器的值作为返回地址,即调用该方法的指令的下一条指令的地址
运行时数据区
PC寄存器
系统类加载器
垃圾回收算法规则:先标记后清除, 标记阶段:引用计数算法 标记阶段:可达性分析算法(GC roots) 清除阶段:标记-清除算法 清除阶段:复制算法 清除阶段:标记-压缩算法
字节码文件
线程1
动态链接
局部变量表
本地方法栈:用于管理本地方法的调用,线程私有。当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。它和虛拟机拥有同样的权限。并不是所有的JVM都支持本地方法。
本地方法库
垃圾回收器
虚拟机栈
老年代
线程3的PC寄存器
初始化阶段
准备
本地方接口:标识符native可以与所有其它的java标识符连用,但是abstract除外。使用的较少
方法返回地址
本地方法栈
解释器
目标代码生成器
线程4的PC寄存器
引导类加载器
本地方法接口
加载完成后
栈帧信息
操作数栈
栈帧数据区
初始化
0 条评论
下一页