运行原理
1、不同线程中所包含的栈帧是不允许存在相互引用的。
2、如果当前方法调用了其他方法,方法返回之际,当前栈帧会传回此方法的执行结果给当前一个栈针,并且虚拟机会丢弃当前栈帧,使得前一个栈帧重新成为当前栈帧。
3、java方法有两种返回函数的方式。
一种是正常的函数返回,使用return指令;另一种是抛出异常。不管使用哪种方式,都会导致栈帧被弹出。
实例
public class stackframetest { public static void main(string[] args) { stackframetest stackframetest = new stackframetest(); stackframetest.method1(); } public void method1(){ system.out.println(method1()开始执行); method2(); system.out.println(method1()执行结束); } public int method2(){ system.out.println(method2()开始执行); int i = 100; int m = (int)method3(); system.out.println(method2()即将结束); return i + m; } public double method3(){ system.out.println(method3()开始执行); double j = 3.1; system.out.println(method3()即将结束); return j; }}
以上就是java虚拟机中栈的运行原理实例分析的详细内容。