日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

node中,如何手動實現觸發垃圾回收機制

作者:草樣的年華 更新時間: 2022-06-06 編程語言

參考阮一峰ES6標準入門中的實例,手動實現

node --expose-gc // --expose-gc 表示允許手動執行垃圾回收機制

然后執行代碼:

// 手動執行一次垃圾回收保證內存數據準確
> global.gc();
undefined

// 查看當前占用的內存,主要關心heapUsed字段,大小約為4.4MB
> process.memoryUsage();
{ rss: 21626880,
  heapTotal: 7585792,
  heapUsed: 4708440,
  external: 8710 }

// 創建一個WeakMap
> let wm = new WeakMap();
undefined

// 創建一個數組并賦值給變量key
> let key = new Array(1000000);
undefined

// 將WeakMap的鍵名指向該數組
// 此時該數組存在兩個引用,一個是key,一個是WeakMap的鍵名
// 注意WeakMap是弱引用
> wm.set(key, 1);
WeakMap { [items unknown] }

// 手動執行一次垃圾回收
> global.gc();
undefined

// 再次查看內存占用大小,heapUsed已經增加到約12MB
> process.memoryUsage();
{ rss: 30232576,
  heapTotal: 17694720,
  heapUsed: 13068464,
  external: 8688 }

// 手動清除變量key對數組的引用
// 注意這里并沒有清除WeakMap中鍵名對數組的引用
> key = null;
null

// 再次執行垃圾回收
> global.gc()
undefined

// 查看內存占用大小,發現heapUsed已經回到了之前的大小(這里約為4.8M,原來為4.4M,稍微有些浮動)
> process.memoryUsage();
{ rss: 22110208,
  heapTotal: 9158656,
  heapUsed: 5089752,
  external: 8698 }

原文鏈接

原文鏈接:https://blog.csdn.net/qq_42690194/article/details/124259852

欄目分類
最近更新