運行原理
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虛擬機中棧的運行原理,希望對大家有所幫助。更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。