You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
letinput=document.querySelector('#input')lettext=document.querySelector('#text')constlistMap=[[input,'this is an input.'],[text,'this is an textarea.'],]//...删除引用后input=nulltext=null//...还需要删除存放数据的对象对其的引用listMap[0]=nulllistMap[1]=null
WeakMap
背景
由于在学习实现私有变量时用到了WeakMap这个知识点,所以特地去恶补了一下。这篇文章同样也是两个月前的学习笔记,放上issue方便整理吧。
设计用途
WeakMap的键所引用的对象均为弱引用,一旦对象的其他引用被清除,那么WeakMap里的键名对象就会自动消失。有助于防止内存泄露。
特性
背景与应用场景
有时候想在对象上存放某些数据,这时候会形成对数据引用。若不手动删除引用,垃圾回收机制就不会释放其占用的内存。
常见如DOM操作:
假如使用了WeakMap来存储数据,则可以省略
listMap[0] = null
一步。只要其他地方的引用已解除,那么可以确保WeakMap的键名对象也已经自动消失。因此使用WeakMap来存储数据,可以有效防止内存泄露。
语法
WeakMap只有四种方法可用:
get()
、set()
、has()
、delete()
示例
如果引用指向的值占用特别多的内存,可以通过node中的
process.memoryUsage()
看出是否回收了键名对象。The text was updated successfully, but these errors were encountered: