最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡單解析java方法在調(diào)用在內(nèi)存中的執(zhí)行過程

 更新時間:2022年07月08日 16:38:44   作者:SSS4362  
這篇文章主要介紹了簡單解析java方法在調(diào)用在內(nèi)存中的執(zhí)行過程,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

一.前提

1.棧的內(nèi)存原理圖

2.JVM是怎么運(yùn)行方法的???

  • 1.在運(yùn)行階段的時候,classLoader類加載器會把class文件中方法對應(yīng)的代碼片段放入內(nèi)存區(qū)中的方法區(qū)中,以便于下次調(diào)用方法時,還能使用該方法。
  • 2.JVM在運(yùn)行過程中,會把方法里面的代碼塊按照方法調(diào)用的先后順序壓棧入內(nèi)存中的??臻g,按照方法里語句的執(zhí)行順序(從上到下,從里到外)去進(jìn)行彈棧與運(yùn)行操作

二.調(diào)用(執(zhí)行)過程

1.方法調(diào)用時的規(guī)則

方法首次調(diào)用時,會通過類加載器將方法的對應(yīng)的代碼塊加載到內(nèi)存中方法區(qū)

每次調(diào)用方法時相當(dāng)于一次壓棧過程,當(dāng)方法里面的語句全部執(zhí)行完畢,就會把該方法進(jìn)行彈棧操作(若不彈棧的話,到某個時候必會產(chǎn)生堆棧溢出異常)

2.示例代碼

public class Practice {
    public static void main(String[] args) {
        System.out.println("main 開始");
        show1();
        System.out.println("main 結(jié)束");
    }
    public static void show1(){
        System.out.println("show1 開始");
        show2();
        System.out.println("show1 結(jié)束");
    }
    public static void show2(){
        System.out.println("show2 開始");
        System.out.println("show2 結(jié)束");
    }
}

3.整個程序的方法調(diào)用的過程圖

3.1 JVM會自動調(diào)用main方法,因此main方法首先壓棧,然后依次執(zhí)行main方法里面的語句

3.2 當(dāng)遇到show1()方法時,會把show1()方法壓棧,并去執(zhí)行show1方法里面的語句

3.3 執(zhí)行show1方法里面的語句時,當(dāng)執(zhí)行到show2()時,show1方法暫停,然后對show2方法壓棧,然后執(zhí)行show2方法的內(nèi)容

3.4 當(dāng)執(zhí)行完show2方法里面的內(nèi)容時,會對show2方法進(jìn)行彈棧,返回至show1方法中調(diào)用show2方法的位置,若沒有對返回值有賦值操作,就會去執(zhí)行后面的語句

3.5 執(zhí)行完show1方法后會對show1方法進(jìn)行彈棧,返回show1方法調(diào)用處的位置,然后去執(zhí)行show1方法調(diào)用處以及后面的語句

4.示例代碼運(yùn)行截圖

到此這篇關(guān)于簡單解析java方法在調(diào)用在內(nèi)存中的執(zhí)行過程 的文章就介紹到這了,更多相關(guān)java方法調(diào)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

商水县| 临朐县| 刚察县| 永年县| 铜陵市| 吉水县| 射洪县| 垫江县| 曲松县| 和政县| 申扎县| 紫云| 左贡县| 于田县| 盐源县| 乐陵市| 安顺市| 贵溪市| 五大连池市| 福泉市| 湛江市| 邵阳市| 大荔县| 德化县| 西盟| 扎鲁特旗| 长兴县| 垫江县| 海兴县| 开平市| 新沂市| 土默特左旗| 永城市| 根河市| 罗平县| 西峡县| 安阳县| 牟定县| 丰镇市| 郯城县| 广州市|