1. JVM栈帧图:
![](https://img.haomeiwen.com/i3796264/4385099e7966767c.jpg)
说明:
线程栈是一个以栈帧为单位先进后出栈,如上图,main线程先执行了main()方法,main()方法中调用了test()方法。
1.1 局部变量表:
用于保存方法的参数和方法内部定义的局部变量,最小单位是变量槽(variable slot),每个变量槽可以存放一个基础数据类型(除long和double),对象的引用和返回地址的数据。
1.2 操作数栈:
是一个后进先出栈,主要存放需要操作的任意的java数据类型数据。
1.3 动态链接:
保存指向运行时常量池中该栈帧所属方法的引用,以便支持方法调用过程中的动态链接。
1.4 返回地址:
a.当方法正常结束时,即执行方法返回的字节码指令,有可能会返回值给该方法的调用者,此时的调用者的程序计数器值可以为该方法的返回地址;
b.当方法执行遇到没有捕获的异常时,返回地址有异常处理器来决定。
网友评论