1. 程式人生 > >java 堆、棧、方法區/ 類變數、成員變數、區域性變數

java 堆、棧、方法區/ 類變數、成員變數、區域性變數

方法區:類資訊、類變數(靜態變數和常量)、方法 
堆:物件、成員變數 
棧:區域性變數 
(1)當程式執行時,首先通過類裝載器載入位元組碼檔案,經過解析後裝入方法區!在方法區中存了類的各種資訊,包括類變數、常量及方法。對於同一個方法的呼叫,同一個類的不同例項呼叫的都是存在方法區的同一個方法。類變數的生命週期從程式開始執行時建立,到程式終止執行時結束! 
(2)當程式中new一個物件時,這個物件存在堆中,物件的變數存在棧中,指向堆中的引用!物件的成員變數都存在堆中,當物件被回收時,物件的成員變數隨之消失! 
(3)當方法呼叫時,JVM會在棧中分配一個棧楨,儲存方法的區域性變數。當方法呼叫結束時,區域性變數消失!

類變數:屬於類的屬性資訊,與類的例項無關,多個例項共用同一個類變數,存在與方法區中。類變數用static修飾,包括靜態變數和常量。靜態變數有預設初始值,常量必須宣告同時初始化。

成員變數:屬於例項的變數,只與例項有關,寫在類下面,方法外,非static修飾。成員變數會隨著成員的建立而生存,隨著成員的回收而銷燬。

區域性變數:宣告在方法中,沒有預設初始值,隨著方法的呼叫而建立,儲存於棧中,隨著方法呼叫的結束而銷燬。
--------------------- 
作者:guohan_solft 
來源:CSDN 
原文:https://blog.csdn.net/guohan_solft/article/details/73530244