數組在內存中的運行機制

  深入數組

1.數組引用變量只是一個引用,這個引用 變量可以指向任何有效的內容,只有當該引用指向有效內存後,纔可通過該數組變量來訪問數組元素。


2.實際的數組對象被存儲在堆(heap)中;如果引用該數組對象的數組引用變量是一個局部變量,那麼它被存儲在棧(stack)內存中。


3.爲什麼有棧內存和堆內存之分

答:當一個方法執行時,每個方法都會建立自己的內存棧,在這個方法內定義的變量將會 逐個放入這個棧內存裏,隨着方法的執行結束,這個方法的內存棧也自然銷燬。因此,所有在方法中定義的局部變量都是放在棧內存中的;在程序中創建一個對象時,這個對象將被保存到運行時數據區中,以便反覆利用(因爲對象的創建成本通常比較大),這個運行時數據區就是堆內存。堆內存中的對象不會隨方法的結束而銷燬,即使方法結束後,即使方法結束後,這個對象還可能被另一個引用變量所引用(在方法的參數傳遞時很常見),則這個對象依然不會被銷燬。只有當一個對象沒有任何引用變量引用它時,系統的垃圾回收器纔會在合適的時候回收它。


b數組的長度首先出來的4   其後是3看似數組的長度的可變的,但是這個是個假象。必須牢記:定義並初始化一個數組後,在內存分配了兩個空間,一個用於存放數組的引用變量,另一個用於存放數組本身。


當程序定義並初始化了a,b兩個數組後,系統內存中實際上產生了4個內存區,其中棧內存中有兩個引用變量:a和b堆內存中也有兩塊內存區,分別用於存儲a和b引用所指向的數組本身


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章