
运行原理
1、不同线程中所包含的栈帧是不允许存在相互引用的。
2、如果当前方法调用了其他方法,方法返回之际,当前栈帧会传回此方法的执行结果给当前一个栈针,并且虚拟机会丢弃当前栈帧,使得前一个栈帧重新成为当前栈帧。
3、Java方法有两种返回函数的方式。
一种是正常的函数返回,使用return指令;另一种是抛出异常。不管使用哪种方式,都会导致栈帧被弹出。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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虚拟机中栈的运行原理,希望对大家有所帮助。更多Java学习指路:Java基础
本教程操作环境:windows7系统、java10版,DELL G3电脑。