內存管理機制就是分配內存管理,每種編程語言都有它的內存管理機制,JavaScript的內存管理機制是:內存基元在變量(對象,字符串等等)創建時分配,然后在他們不再被使用時“自動”釋放。后者被稱為垃圾回收。這個“自動”是混淆并給JavaScript(和其他高級語言)開發者一個錯覺:他們可以不用考慮內存管理,JS內存空間分為棧(stack)、堆(heap)、池(一般也會歸類為棧中)。
其中棧存放變量,堆存放復雜對象,池存放常量,在js中的分配的內存一般有如下的生命周期
- 內存分配(當我們聲明變量,函數,對象時系統自動為他們分配內存)
- 內存使用(使用變量,函數等)
- 內存回收(使用完畢,由垃圾回收機制自動回收不再使用的內存)
當內存走到最后一步的時候就開始內存回收,js中使用的是垃圾回收機制
垃圾回收有2種基本方式————
2. 標記清除————
垃圾回收器會在運行時給存儲在內存中的所有變量加一個標記,然后去除環境中的變量以及被環境中的變量所引用的變量(閉包)在這些完成后仍存在標記的就是要刪除的變量了,因為環境中的變量已經無法訪問到這些變量了
2. 引用計數————
引用計數的策略是跟蹤記錄每個值被使用的次數。當聲明了一個變量并將一個引用類型賦值給該變量時,這個值得引用次數就加一,如果該變量的值變成了另一個,則這個值得引用次數就減一,當這個值的引用次數為0的時候,說明沒有變量在使用,這個值無法訪問。由此可以將其占用的空間回收,這些垃圾回收器就會在運行時清理掉引用次數為0的值占用的空間,但這種方法容易引起內存泄漏,因為這種方式沒有解決循環引用的問題,所以不建議使用!
以上就是我對js的內存機制的理解,如有錯誤請聯系我進行更改!!!?。?/p>