WeakMap
WeakMap 對象是一組鍵/值對的集合,其中的鍵是弱引用的垒棋。其鍵必須是對象懂鸵,而值可以是任意的偏螺。
WeakMap 的 key 是不可枚舉的,它的引用是弱引用匆光,在垃圾回收的時候會被回收掉套像。
基本上,如果你要往對象上添加數(shù)據(jù)终息,又不想干擾垃圾回收機制夺巩,就可以使用 WeakMap。
下面是在node環(huán)境下的示例:
weakMap.png
Map.png
- rss(resident set size):常駐集大小周崭,是進程在主內(nèi)存設備(即總分配內(nèi)存的子集)中占用的空間量柳譬,包括所有 C++ 和 JavaScript 對象和代碼。
- heapTotal:V8 的內(nèi)存使用量续镇、"堆"的總大小美澳,即占用的內(nèi)存,包括3個部分摸航,
1. 已分配的內(nèi)存制跟,用于對象的創(chuàng)建和存儲,對應于heapUsed
2. 未分配的但可用于分配的內(nèi)存
3. 未分配的但不能分配的內(nèi)存酱虎,例如在垃圾收集(GC)之前對象之間的內(nèi)存碎片
- heapUsed:V8 的內(nèi)存使用量雨膨、已分配的內(nèi)存,即堆中所有對象的總大小读串,是heapTotal的子集
- external: 即綁定到 V8 管理的 JavaScript 對象的 C++ 對象的內(nèi)存使用量聊记。
-
arrayBuffers:是指為
ArrayBuffer
和SharedArrayBuffer
分配的內(nèi)存,包括所有 Node.jsBuffer
恢暖。 這也包含在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