1, 垃圾回收機制僅僅作用於堆記憶體,與棧記憶體無關; 2, 棧:stack 棧的存取速度比堆快,效率高 保存局部變數和對象的引用值 3, 堆:保存較大的變數 4, 編譯器處理int a = 3 時,首先會在棧中創建一個變數為a的引用,然後查找棧中是否存在3這個值,如果不存在,就將3存放進來; 處理b ...
1, 垃圾回收機制僅僅作用於堆記憶體,與棧記憶體無關;
2, 棧:stack 棧的存取速度比堆快,效率高 保存局部變數和對象的引用值
3, 堆:保存較大的變數
4, 編譯器處理int a = 3 時,首先會在棧中創建一個變數為a的引用,然後查找棧中是否存在3這個值,如果不存在,就將3存放進來;
處理b = 3時,也是這樣,因為之前將3存放進來了,所以此時編譯器只需將創建b這個變數再指向3就行了(有利於節省空間)。
這個時候就出現a和b同時指向3的情況,但不影響他們的使用。如果此時又定義a = 4;,則需將4存放進記憶體,由a指向4,a值的修改不會影響到b值。
記憶體的劃分: 1,寄存器。 2,本地方法區。 3,方法區。 4,棧記憶體。 存儲的都是局部變數。 而且變數所屬的作用域一旦結束,該變數就自動釋放。 5,堆記憶體。 存儲是數組和對象(其實數組就是對象) 凡是new建立在堆中。 特點: 1,每一個實體都有首地址值。 2,堆記憶體中的每一個變數都有預設初始化值,根據類型的不同而不同。整數是0,小數0.0或者0.0f,boolean false char '\u0000' 3,垃圾回收機制。