js的變量——基本類型保存在棧中,引用類型保存在堆中


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是線程共有的。

【完】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM