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

js 垃圾回收 & js GC_第1张图片

closure 闭包

  1. 闭包的优缺点

优点:
① 减少全局变量;
② 减少传递函数的参数量;
③ 封装;

缺点:
① 使用闭包会占有内存资源,过多的使用闭包会导致内存溢出等

内存泄漏的解决方法

把那些不需要的, 但是垃圾回收又收不走的变量, 赋值为null,然后让垃圾回收回收走;

  1. 引用计数

js 垃圾回收 & js GC_第2张图片

  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 发布文章使用:只允许注册用户才可以访问!


你可能感兴趣的:(js 垃圾回收 & js GC)