運行原理
1、不同線程中所包含的棧幀是不允許存在相互引用的。
2、如果當前方法調(diào)用了其他方法,方法返回之際,當前棧幀會傳回此方法的執(zhí)行結(jié)果給當前一個棧針,并且虛擬機會丟棄當前棧幀,使得前一個棧幀重新成為當前棧幀。
3、Java方法有兩種返回函數(shù)的方式。
一種是正常的函數(shù)返回,使用return指令;另一種是拋出異常。不管使用哪種方式,都會導(dǎo)致棧幀被彈出。
實例
public class StackFrameTest {
public static void main(String[] args) {
StackFrameTest stackFrameTest = new StackFrameTest();
stackFrameTest.method1();
}
public void method1(){
System.out.println("method1()開始執(zhí)行");
method2();
System.out.println("method1()執(zhí)行結(jié)束");
}
public int method2(){
System.out.println("method2()開始執(zhí)行");
int i = 100;
int m = (int)method3();
System.out.println("method2()即將結(jié)束");
return i + m;
}
public double method3(){
System.out.println("method3()開始執(zhí)行");
double j = 3.1;
System.out.println("method3()即將結(jié)束");
return j;
}
}
以上就是java虛擬機中棧的運行原理,希望對大家有所幫助。更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗,課程大綱更科學更專業(yè),有針對零基礎(chǔ)的就業(yè)班,有針對想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實現(xiàn)java程序員夢想。