Java架构

虚拟机栈

已入坑底下评论,栈存储单元:栈帧(局部变量表、操作数栈、动态链接、方法返回地址、一些附加信息)

本地变量表:存储的基本单位是槽位,4字节,可重用

操作数栈:在方法执行过程中,根据字节码指令写入或提取栈中的数据

代码跟踪:javap - V XXX类或使用jclasslib插件的想法(view - > show bytecode with jclasslib)

栈顶缓存技术:将所有的栈顶元素缓存到物理CPU的寄存器中,减少对内存的读写次数,提高引擎的执行效率

动态链接:每个堆栈帧都包含对运行时常量池中帧所属方法的引用。(常量池函数:提供一些符号和常量,方便指令识别)

方法调用:早期绑定;接口参数(如后期绑定);非虚方法(static, final等);虚方法(后期绑定方法)

invokestatic

invokespecial

invokevirtual

invokeinterface

Invokedynamic:动态解析要调用的方法,只有在java8 lambda之后才会有一个直接生成的方法

虚拟方法表

方法返回地址:存储调用该方法的程序计数器的值,即调用该方法的指令的下一条指令的地址

一些附加信息:与虚拟机实现相关的信息,如程序调试支持



posted @ 2022-04-27 13:32  爱编程的小姐姐  阅读(61)  评论(0)    收藏  举报