Java架构
虚拟机栈
已入坑底下评论,栈存储单元:栈帧(局部变量表、操作数栈、动态链接、方法返回地址、一些附加信息)
本地变量表:存储的基本单位是槽位,4字节,可重用
操作数栈:在方法执行过程中,根据字节码指令写入或提取栈中的数据
代码跟踪:javap - V XXX类或使用jclasslib插件的想法(view - > show bytecode with jclasslib)
栈顶缓存技术:将所有的栈顶元素缓存到物理CPU的寄存器中,减少对内存的读写次数,提高引擎的执行效率
动态链接:每个堆栈帧都包含对运行时常量池中帧所属方法的引用。(常量池函数:提供一些符号和常量,方便指令识别)
方法调用:早期绑定;接口参数(如后期绑定);非虚方法(static, final等);虚方法(后期绑定方法)
invokestatic
invokespecial
invokevirtual
invokeinterface
Invokedynamic:动态解析要调用的方法,只有在java8 lambda之后才会有一个直接生成的方法
虚拟方法表
方法返回地址:存储调用该方法的程序计数器的值,即调用该方法的指令的下一条指令的地址
一些附加信息:与虚拟机实现相关的信息,如程序调试支持

浙公网安备 33010602011771号