上一篇文章我們看到基本類型數據是通過棧內存管理的,而引用類型數據是通過堆棧二段式內存管理的。那么二段式內存管理有什么好處呢?下面就讓小弟為大家淺析一下,希望各位大蝦能夠幫助指正。
    首先,引用類型包括類,接口,數組三種,而這些類型數據的大小都是很難確定的,因為在類中有屬性和方法,具體實現多少屬性和多少方法要根據具體的實際情況而定,因此類無法確定其占用內存大小;接口更是如此,每一個接口實現類都不一樣,也無法確定其大小;數組有動態數組,同樣無法確定大小。那么無法確定其占用內存大小的時候,用棧內存來管理就顯得力不從心了,這個時候就想到了堆棧二段式管理,在棧內存中只存儲對象的句柄,也就是引用地址;而堆內存中存儲它的屬性和方法。這樣一來,只需要如果想調用這個對象的屬性或者方法,只需先要找到該對象句柄就可以了。而且當該對象不再使用的時候,垃圾回收器就會把它回收,既節省空間又十分方便管理,并且在內存中管理的處理速度是十分塊的,僅次于寄存器中的處理速度。
下面我們總結一下二段式堆棧內存管理優勢:
1.二段式內存管理處理數據的速度十分快,在內存中的處理速度是僅次于寄存器中的處理速度的。
2.二段式內存管理便于引用類型數據的管理,無論是是對象的初始化、對象的調用還是對象內存的回收,都顯得十分的清晰和有條理,尤其是當對象不再使用時,垃圾回收器會自動不定時的選擇時機對該垃圾內存進行回收,并且不會出現回收錯內存的錯誤,十分的方便和有條理。
這就是我總結的二段式堆棧內存管理優勢。