談談js中的內存機制——垃圾回收機制

內存管理機制就是分配內存管理,每種編程語言都有它的內存管理機制,JavaScript的內存管理機制是:內存基元在變量(對象,字符串等等)創建時分配,然后在他們不再被使用時“自動”釋放。后者被稱為垃圾回收。這個“自動”是混淆并給JavaScript(和其他高級語言)開發者一個錯覺:他們可以不用考慮內存管理,JS內存空間分為棧(stack)、堆(heap)、池(一般也會歸類為棧中)。
其中棧存放變量,堆存放復雜對象,池存放常量,在js中的分配的內存一般有如下的生命周期

  • 內存分配(當我們聲明變量,函數,對象時系統自動為他們分配內存)
  • 內存使用(使用變量,函數等)
  • 內存回收(使用完畢,由垃圾回收機制自動回收不再使用的內存)

當內存走到最后一步的時候就開始內存回收,js中使用的是垃圾回收機制

垃圾回收有2種基本方式————

2. 標記清除————

垃圾回收器會在運行時給存儲在內存中的所有變量加一個標記,然后去除環境中的變量以及被環境中的變量所引用的變量(閉包)在這些完成后仍存在標記的就是要刪除的變量了,因為環境中的變量已經無法訪問到這些變量了

2. 引用計數————

引用計數的策略是跟蹤記錄每個值被使用的次數。當聲明了一個變量并將一個引用類型賦值給該變量時,這個值得引用次數就加一,如果該變量的值變成了另一個,則這個值得引用次數就減一,當這個值的引用次數為0的時候,說明沒有變量在使用,這個值無法訪問。由此可以將其占用的空間回收,這些垃圾回收器就會在運行時清理掉引用次數為0的值占用的空間,但這種方法容易引起內存泄漏,因為這種方式沒有解決循環引用的問題,所以不建議使用!
以上就是我對js的內存機制的理解,如有錯誤請聯系我進行更改!!!?。?/p>

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虛擬機(JVM)垃圾回收器提供...
    簡欲明心閱讀 89,827評論 17 311
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發崗...
    時芥藍閱讀 42,360評論 11 349
  • 一、垃圾回收機制—GCJavaScript具有自動垃圾回收機制(GC:Garbage Collecation),也...
    鐵木真丫丫丫閱讀 329評論 0 1
  • 誰待似落花般鶯朋燕友?誰待似轉燈般龍爭虎斗?誰落得半生里姻緣空走?誰落得孤燈下殘命消受?你看這彈指間烏飛兔走,你道...
    張瀾風閱讀 229評論 0 0
  • 今天晚上,班主任孫老師把我寫的稿子發在班里群里了,說已經上傳學校微信了,我很高興,跟個孩子一樣,我趕緊跟女...
    杜欣陽媽媽閱讀 259評論 0 0