首頁  >  文章  >  Java  >  java 堆疊和堆疊差異詳細介紹

java 堆疊和堆疊差異詳細介紹

高洛峰
高洛峰原創
2017-01-24 14:40:471736瀏覽

java 棧和堆區別

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,垃圾回收机制。

   

感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多java 堆疊和堆區別詳細介紹相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn