(3)java棧

來源:互聯網
上載者:User

標籤:

java棧和函數調用的關係圖

【名詞解釋】
--->java棧是一塊線程的私人空間
--->java的棧是先進後出的資料結構。函數返回,則該函數的棧幀被彈出。
--->一個函數對應一個棧幀,一個棧幀裡包含局部變數表,運算元棧,棧資料區

【行為解釋】
--->每次函數調用都會產生相應的棧幀,從而佔用一定的棧空間,因為棧空間不足,那麼函數調用自然無法繼續進行下去。當請求的棧深度大於最大可用深度時,系統會拋出StackOverflowError的棧溢出錯誤

【異常】
--->棧記憶體溢出java.lang.StackOverflowError

【參數設定】
--->-Xss128k 代表線程的最大棧空間為128K

【棧幀包含的內容解釋】
《局部變數表》
        --->儲存所指函數的局部變數,參數。函數局部變數和參數越多則棧幀越大,所佔棧空間越多,影響函數的嵌套調用次數。
        --->long和double類型的局部變數佔用2個字大小。
        --->int,short,byte,對象引用等佔用1個字大小
        --->字:電腦記憶體中佔據一個單獨記憶體單元編號的一組二進位串。一般32位電腦上一個字為4個位元組的長度
        --->每個局部變數表中有:範圍範圍,所在槽位(索引,變數名,資料類型)後邊變數槽位可複用前邊已經失去範圍變數的槽位,達到節省空間的目的。
/**
         *
         * @param a
         * @param b
         * 局部變零表中:this ,a,b,c,d
         * 槽位:this(0),a(1),b(2),c(3),d(4)
         * 所站字的大小為:5個字
         *
         */
        public static void test1(String a,int b){
                int c=0;
                System.out.println("Test2.test1()"+c);
                long d=2;
        }
        
        /**
         *
         * @param a
         * @param b
         * 局部變零表中:this ,a,b,c,d
         * 槽位:this(0),a(1),b(2),c(3),d(3)
         * 所站字的大小為:4個字
         */
        public static void test2(String a,int b){
                if(true){
                        int c=0;
                        System.out.println("Test2.test2()"+c);
                }
                int d=2;
        }

《運算元棧》
        --->運算元棧也是棧幀中重要的內容之一,主要儲存計算過程的中間結果,同時作為計算過程中變數臨時儲存空間
        --->先進後出的資料結構

《幀資料區》
        --->訪問常量池的指標,方便程式訪問常量池
        --->異常處理表。當程式發生異常,根據該表尋找相應的異常,進行處理


棧上分配:
        --->是java虛擬機器提供的一項最佳化技術,基本思想:對於那些線程私人的對象(這裡指不可能被其他線程訪問的對象),可以將他們打散分配在棧上,而不是分配在堆上。分配在棧上的好處是可以在函數調用結束後自行銷毀,而不需要記憶體回收行程介入,從而提高系統效能。
        --->棧上分配的一個技術基礎是進行逃逸分析。逃逸分析的目的是判斷對象的範圍是否有可能逃逸出函數體。
        

(3)java棧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.