一凛膏、垃圾回收機制存在的原因
1.解釋器:
javascript代碼由解釋器執(zhí)行啄育,解釋器包含在瀏覽器中该窗。
2.內(nèi)存泄露:
由于某些原因?qū)е乱逊峙涞膬?nèi)存未釋放或無法釋放弟蚀,造成內(nèi)存浪費,運行速度降低酗失,甚至系統(tǒng)崩潰义钉。
3.內(nèi)存的分配:
當定義一個變量的時候,解釋器會自動為該變量分配存儲單元规肴,但是如果只分配不釋放捶闸,當越來越多的變量被定義時,會造成內(nèi)存泄漏拖刃。所以JavaScript的解釋器需要自動釋放內(nèi)存删壮,防止內(nèi)存泄露。
二兑牡、垃圾回收方式
1.標記清除法
(1)標記階段:當變量進入環(huán)境時央碟,就給變量做進入標記;如:“它進入了環(huán)境哦”均函。
(2)清除階段:當變量離開環(huán)境時亿虽,就給變量做清除標記;如:“它離開了環(huán)境哦” 苞也;當變量被標記了“離開”時洛勉,就說明無法訪問該變量了,因此就可以將其所占的空間收回來如迟。
2.引用計數(shù)法:
跟蹤記錄每個值的被引用的次數(shù)收毫。聲明一個變量并將一個引用類型賦值給該變量攻走,這個值的被引用數(shù)就加1;相反此再,如果引用該值的變量轉(zhuǎn)而去引用其他值昔搂,那么該值的被引用次數(shù)將會減1。如果該值的被引用次數(shù)為0引润,就說明無法訪問該值了巩趁,因此就可以將其所占的空間收回來。