1. 程式人生 > 其它 >淺談一下自己對js 垃圾回收的看法以及理解

淺談一下自己對js 垃圾回收的看法以及理解

今天在網上看到一篇關於js垃圾回收的貼子 覺得說的比較混亂 不方便小白們的理解 因為我也是個小白 思考力大半天才理解

於是又去瀏覽了大量的關於js的垃圾回收 在這裡寫下我個人對垃圾回收的理解:

首先什麼是垃圾 什麼不是垃圾  有用的就不是垃圾 沒用的就是垃圾

所以 js裡的全域性變數 當前巢狀呼叫鏈上的其他函式的變數和引數 本地函式的區域性變數和引數 這些就是百分百有用的 

這些百分百有用的稱為 根,什麼是根 根就是最基礎的 最原始的 樹 花等 根就是它們的基礎 ,從根開始一直到莖葉等 若將js看出一珠花,

很明顯花整個都是有用的,說了這麼多 什麼是垃圾呢?掉落的花瓣 !掉落的葉子 !這些東西脫離了整個花的主體 脫離了花的基礎 跟!

a全域性變數 看做根 顯然陣列【1,2,3】存在過 但是被【4,5,6】替代了 這樣看:陣列【1,2,3】曾經是根的生長細胞 但是他壞死了 被【4,5,6】替代了 從a這個跟脫離了

於是乎 陣列【1,2,3】就成了垃圾  所以說了這麼多 和跟有聯絡的 就不是垃圾 和根沒聯絡的 就是垃圾

垃圾回收垃圾回收 什麼是垃圾清楚了再談談什麼是回收

假若花是一株很值錢的花 生在在一家富貴家庭 家裡請了保姆 於是乎 花瓣掉落了 葉子掉落了 為了確保家裡的美觀整潔  保姆得每天清理 將掉落的‘’垃圾‘’打掃掉

js也一樣 為了確保程式的效率 會定期對程式進行清除 保姆能夠一眼看見掉落的垃圾 js怎麼看呢?

從根開始! 順著根一步步向上走 有聯絡的新增一個標記 在將整個程式檢查完後將沒標記的清理 這就是  標記-清除法(不一定是整個程式檢查完統一清理 這裡純屬個人推測)