運(yùn)行原理
1、不同線程中所包含的棧幀是不允許存在相互引用的。
2、如果當(dāng)前方法調(diào)用了其他方法,方法返回之際,當(dāng)前棧幀會(huì)傳回此方法的執(zhí)行結(jié)果給當(dāng)前一個(gè)棧針,并且虛擬機(jī)會(huì)丟棄當(dāng)前棧幀,使得前一個(gè)棧幀重新成為當(dāng)前棧幀。
3、Java方法有兩種返回函數(shù)的方式。
一種是正常的函數(shù)返回,使用return指令;另一種是拋出異常。不管使用哪種方式,都會(huì)導(dǎo)致棧幀被彈出。
實(shí)例
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虛擬機(jī)中棧的運(yùn)行原理,希望對(duì)大家有所幫助。更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。