java 堆、棧、方法區/ 類變量、成員變量、局部變量

方法區:類信息、類變量(靜態變量和常量)、方法 
堆:對象、成員變量 
棧:局部變量 
(1)當程序運行時,首先經過類裝載器加載字節碼文件,通過解析後裝入方法區!在方法區中存了類的各類信息,包括類變量、類常量及方法。對於同一個方法的調用,同一個類的不一樣實例調用的都是存在方法區的同一個方法。類變量的生命週期從程序開始運行時建立,到程序終止運行時結束! 
(2)當程序中new一個對象時,這個對象存在堆中,對象的變量存在棧中,指向堆中的引用!對象的成員變量都存在堆中,當對象被回收時,對象的成員變量隨之消失! 
(3)當方法調用時,JVM會在棧中分配一個棧楨,存儲方法的局部變量。當方法調用結束時,局部變量消失!spa

類變量:屬於類的屬性信息,與類的實例無關,多個實例共用同一個類變量,存在與方法區中。類變量用static修飾,包括靜態變量和常量。靜態變量有默認初始值,常量必須聲明同時初始化。對象

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

局部變量:聲明在方法中,沒有默認初始值,隨着方法的調用而建立,存儲於棧中,隨着方法調用的結束而銷燬。變量

相關文章
相關標籤/搜索