js的變量——基本類型保存在棧中,引用類型保存在堆中
阿新 • • 發佈:2018-11-14
不能 分享圖片 腳本 -s 先進後出 多個 mage 基本 num
javascript的基本類型:Undefined,Null,Boolean,Number,String
引用類型:Object,Array,Function
基本類型值在內存中占據固定大小,被保存在棧內存中,引用類型值是對象,保存在堆內存中。
Javascript的內存的生命周期對於用戶來說是透明的,不開放的。在定義變量時候就完成了分配內存,使用時候是對內存的讀寫操作,內存的釋放依賴於瀏覽器的垃圾回收機制。
棧(stack)和堆(heap)==>
1,棧
stack是有結構的,先進後出,存放基本類型和對象的引用,每個區塊的大小是明確的。
2,堆
heap沒有結構,數據任意存放,js中主要存放的是引用類型,比如:Array,Object對象
所以明顯看出:數據查詢速度比較的話,stack遠遠大於heap。
在實際開發過程中,偶爾遇到棧溢出的情況,stack overflow錯誤,因為stack創建時候,大小是確定的,超過額度大小就會發生棧溢出【當js出現死循環或者錯誤的遞歸時候】。heap大小是不確定的,需要可以一直累加。
js是單線程的,核心特征哈,那麽怎麽利用多核的CPU呢?H5的Web Worker標準,允許js腳本創建多個線程,但是子線程受主線程的控制,且不能操作DOM。
stack是線程獨占的,heap是線程共有的。
【完】
js的變量——基本類型保存在棧中,引用類型保存在堆中