js的新生代垃圾回收知識點總結(jié)
在進行老生代的標(biāo)記清除法回收以前,還會有一個新生代的垃圾回收算法執(zhí)行。
新生代和老生代
所謂新生代,指的是新產(chǎn)生的對象;老生代就是經(jīng)歷過新生代垃圾回收后還“存活”下來的對象。
新生代的垃圾回收算法 Scavenge GC
算法很簡單:
1. 我們維護一個列表,老生代對象每次指向一個新生對象的時候,記錄下來;每次刪除指向的時候,刪除記錄。(這樣我們就知道新生代對象里面,哪些對象是存活的了)
2. 我們把新生代對象的內(nèi)存平均分開 2 份空間From 和 To
3. 每當(dāng)有新生對象誕生,就會在 From 空間出現(xiàn)
4. 一旦 From 空間被占滿,就觸發(fā) Scavenge GC
5. 根據(jù)維護的列表,我們從 From 空間拿出存活的對象,復(fù)制到 To 空間
6. 清空 From 空間 (這樣就可以實現(xiàn)把不活躍的對象給回收掉)
7. From To 空間角色互換,開始下一輪循環(huán)
其中經(jīng)歷過回收還存活的對象,age++,在 Java 默認情況下,age 15 的時候會晉升到老生代,JS 規(guī)定的 age,博主還沒查明
還有一種情況,當(dāng)復(fù)制到 To 空間的時候, To 空間已經(jīng)使用了25%,那么這個對象直接晉升到老生區(qū)。
以上對js的新生代垃圾回收淺析做了簡單的介紹,感謝大家的閱讀和對腳本之家的支持。
相關(guān)文章
通過BootStrap實現(xiàn)輪播圖的實際應(yīng)用
js我們沒有學(xué)過,今天我是用bootstrap實現(xiàn)輪播圖的效果,非常不錯代碼簡單易懂,需要的朋友參考下吧2016-09-09
詳解ES6 export default 和 import語句中的解構(gòu)賦值
這篇文章主要介紹了詳解ES6 export default 和 import語句中的解構(gòu)賦值,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05
頁面中實現(xiàn)setInterval和setTimeout效果示例詳解
這篇文章主要為大家介紹了不使用setTimeout和setInterval在頁面中實現(xiàn)setInterval和setTimeout效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
bootstrap提示標(biāo)簽、提示框?qū)崿F(xiàn)代碼
這篇文章主要為大家詳細介紹了bootstrap提示標(biāo)簽、提示框的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
利用Echarts如何實現(xiàn)多段圓環(huán)圖
這篇文章主要給大家介紹了關(guān)于利用Echarts如何實現(xiàn)多段圓環(huán)圖的相關(guān)資料,文中通過實例代碼代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-03-03

