JavaScript中變量的存放瀏覽器
- 一、基本類型:基本數據類型會保存在棧中,基本類型的值在內存中都佔用固定大小的空間,能夠按值訪問。基本類型有:Undefined,Null,Number,String,Boolean和Symbol。閉包中的變量不會保存在棧內存中,而是保存在堆內存中。
- 二、引用類型:引用類型在內存中佔用的空間大小是不肯定的,可是引用類型的值在內存中的地址是肯定的,因此引用類型的訪問地主會保存在棧裏面,引用類型的具體的值會保存在堆裏面。當訪問引用類型的值時,先從棧中獲取這個值的地址,再經過地址找到堆中的值,這樣的方式叫作按引用訪問。
JavaScript中內存生命週期
JavaScript的內存回收
JavaScript有垃圾自動回收機制,垃圾收集器每隔一段時間就會運行一次,會自動的將再也不使用的變量佔用的內存釋放。閉包
一、局部變量和全局變量的銷燬函數
- 局部變量:在局部做用域中,當函數執行完成以後,局部變量就沒有存在的必要了,垃圾回收器會在運行的時候銷燬局部變量並釋放內存。
- 全局變量:全局變量是在最後進行銷燬的,會長時間佔用內存,因此應該儘可能減小全局變量的使用。
經常使用的垃圾回收方法
- 標記清除法(現代瀏覽器已經再也不使用):缺點是當出現循環引用的時候,會致使內存不能釋放,出現內存泄漏的問題。
- 引用計數法(比較經常使用)
內存泄漏
若是沒有及時釋放再也不被使用的內存,就會致使內存佔用愈來愈高,致使進程崩潰,這樣的現象就是內存泄漏。生命週期