js 垃圾回收 & js GC


js 垃圾回收 & js GC

js GC / js Garbage Collector

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Memory_Management

closure 閉包

  1. 閉包的優缺點

優點:
① 減少全局變量;
② 減少傳遞函數的參數量;
③ 封裝;

缺點:
① 使用閉包會占有內存資源,過多的使用閉包會導致內存溢出等

內存泄漏的解決方法

把那些不需要的, 但是垃圾回收又收不走的變量, 賦值為null,然后讓垃圾回收回收走;

  1. 引用計數

  const log = console.log;
  // [1, 2, 3, 4] 是一個值, heap 堆上的一塊內存空間的地址
  // 引用計數 1 次, arr 對這個值的引用 1 次
  let arr = [1, 2, 3, 4];
  log('hello world', arr);
  setTimeout(() => {
    // 引用計數 0 次, 值賦值 null 🚀, arr 對這個值的引用 0 次
    // 觸發自動 GC
    arr = null;
    log(`GC`)
  }, 3000);

  1. 標記

GC & Memory Management & Memory Leak & Garbage Collector

內存泄漏 & 垃圾收集器

https://zh.javascript.info/garbage-collection

https://javascript.info/garbage-collection

V8 GC

https://v8.dev/blog/trash-talk

refs

https://www.cnblogs.com/hejun26/p/10910590.html

https://stackoverflow.com/questions/864516/what-is-javascript-garbage-collection

https://www.tutorialspoint.com/garbage-collection-gc-in-javascript

https://auth0.com/blog/four-types-of-leaks-in-your-javascript-code-and-how-to-get-rid-of-them/

https://blog.sessionstack.com/how-javascript-works-memory-management-how-to-handle-4-common-memory-leaks-3f28b94cfbec


Flag Counter

©xgqfrms 2012-2020

www.cnblogs.com 發布文章使用:只允許注冊用戶才可以訪問!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM