美文网首页
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内存回收对比

    WeakMap WeakMap 对象是一组键/值对的集合,其中的键是弱引用的。其键必须是对象,而值可以是任意的。W...

  • 24.WeakMap

    WeakMap WeakMap 是 Map 的弱引用,它也是在 Map 的基础上有了一些限制和自己的特性。 没有 ...

  • Set WeakSet Map WeakMap

    Set SetWeak Map WeakMap

  • Map 和 WeakMap

    Map map对象是一个简单的键/值映射。任何值(包括对象和原始值)都可以用作一个键或一个值。 var map =...

  • Map和WeakMap

    1. Map 1.1 含义和基本用法 JavaScript 的对象(Object),本质上是键值对的集合(Ha...

  • Map和WeakMap

    Map 1 .之前对象的问题Object只能做键值对的集合Hash结构 2 .只有对同一个对象的引用,Map才将其...

  • android--垃圾回收与内存优化

    什么是垃圾回收 对比C/C++这种需要自己管理内存的语言 java可以实现自动内存管理和回收 垃圾回收器负责回收程...

  • WeakMap的学习与应用场景

    WeakMap 是什么? WeakMap 与 Map 类似,也是生成 键值对的组合,但是有区别:1.WeakMap...

  • Set Map WeakSet WeakMap

    本文转自博客:Set、WeakSet、Map及WeakMap Set 和 Map 主要的应用场景在于 数据重组 和...

  • ES6学习笔记(四)

    十五、Map和WeakMap 1、Map 用途:类似json,但是 json 的键(key)只能是字符串 ​ ...

网友评论

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

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