堆(heap)棧(stack)

堆(heap)、棧(stack)

堆是動態分配內存,內存大小不一,也不會自動釋放。棧是自動分配相對固定大小的內存空間,並由系統自動釋放。

js的基本類型就5種,Undefined、Null、不是new出來的布爾、數字和字符串,它們都是直接按值存儲在棧中的,每種類型的數據佔用的內存空間的大小是確定的,並由系統自動分配和自動釋放。這樣帶來的好處就是,內存可以及時得到回收,相對於堆來說,更加容易管理內存空間。

js中其他類型的數據被稱爲引用類型的數據(如對象、數組、函數等),它們是通過拷貝和new出來的,這樣的數據存儲於堆中。其實,說存儲於堆中,也不太準確,因爲,引用類型的數據的地址指針是存儲於棧中的,當我們想要訪問引用類型的值的時候,需要先從棧中獲得對象的地址指針,然後,在通過地址指針找到堆中的所需要的數據。

說來也是形象,棧,線性結構,後進先出,便於管理。堆,一個混沌,雜亂無章,方便存儲和開闢內存空間。

源自:傳送門

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章