您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關js中新生代垃圾回收知識點的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在進行老生代的標記清除法回收以前,還會有一個新生代的垃圾回收算法執行。
新生代和老生代
所謂新生代,指的是新產生的對象;老生代就是經歷過新生代垃圾回收后還“存活”下來的對象。
新生代的垃圾回收算法 Scavenge GC
算法很簡單:
1. 我們維護一個列表,老生代對象每次指向一個新生對象的時候,記錄下來;每次刪除指向的時候,刪除記錄。(這樣我們就知道新生代對象里面,哪些對象是存活的了)
2. 我們把新生代對象的內存平均分開 2 份空間From 和 To
3. 每當有新生對象誕生,就會在 From 空間出現
4. 一旦 From 空間被占滿,就觸發 Scavenge GC
5. 根據維護的列表,我們從 From 空間拿出存活的對象,復制到 To 空間
6. 清空 From 空間 (這樣就可以實現把不活躍的對象給回收掉)
7. From To 空間角色互換,開始下一輪循環
其中經歷過回收還存活的對象,age++,在 Java 默認情況下,age 15 的時候會晉升到老生代,JS 規定的 age,博主還沒查明
還有一種情況,當復制到 To 空間的時候, To 空間已經使用了25%,那么這個對象直接晉升到老生區。
關于“js中新生代垃圾回收知識點的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。