美文网首页
WeakMap和Map内存回收对比

WeakMap和Map内存回收对比

作者: callPromise | 来源:发表于2021-12-06 11:27 被阅读0次

    WeakMap

    WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的。
    WeakMap 的 key 是不可枚举的,它的引用是弱引用,在垃圾回收的时候会被回收掉。
    基本上,如果你要往对象上添加数据,又不想干扰垃圾回收机制,就可以使用 WeakMap。
    下面是在node环境下的示例:


    weakMap.png
    Map.png
    • rss(resident set size):常驻集大小,是进程在主内存设备(即总分配内存的子集)中占用的空间量,包括所有 C++ 和 JavaScript 对象和代码。
    • heapTotal:V8 的内存使用量、"堆"的总大小,即占用的内存,包括3个部分,
      1. 已分配的内存,用于对象的创建和存储,对应于heapUsed
      2. 未分配的但可用于分配的内存
      3. 未分配的但不能分配的内存,例如在垃圾收集(GC)之前对象之间的内存碎片
    
    • heapUsed:V8 的内存使用量、已分配的内存,即堆中所有对象的总大小,是heapTotal的子集
    • external: 即绑定到 V8 管理的 JavaScript 对象的 C++ 对象的内存使用量。
    • arrayBuffers:是指为 ArrayBufferSharedArrayBuffer 分配的内存,包括所有 Node.js Buffer。 这也包含在 external 值中。 当 Node.js 被用作嵌入式库时,此值可能为 0,因为在这种情况下可能不会跟踪 ArrayBuffer 的分配。

    参考

    Map
    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
    WeakMap
    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakMap
    http://www.ruanyifeng.com/blog/2017/04/memory-leak.html

    相关文章

      网友评论

          本文标题:WeakMap和Map内存回收对比

          本文链接:https://www.haomeiwen.com/subject/rhugxrtx.html