weakMap为什么是弱引用原理
短信预约 -IT技能 免费直播动态提醒
前言
聊一下WeakMap
弱引用,看了很多文章发现说的不对,给出的demo
经过尝试也是错误的,哎,难搞也要搞
弱引用 vs 强引用
对象被强引用则不会被垃圾回收机制回收,这没啥说的。那到底啥事弱引用呢?
垃圾回收机制最常用的方法就是引用计数,只要有引用堆内存的地方,引用计数就要加1。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放
弱引用则可以理解为引用计数不会+1,看一下实际表现
Map vs WeakMap
var m = new WeakMap()
function Foo() {
this.arr = new Array(5 * 1024 * 1024)
}
var f = new Foo()
m.set(f, 'data')
f = null
网上有人说m.get('f')
得到的是undefined
所以是弱引用,但其实你使用Map
得到的也是undefined
,这种说法还非常的多,不能说他说的不对吧,简直就是胡说。
回归正传,看一下为啥说WeakMap
是弱引用。打开F12
,选择内存(memory)
,点击小圆点获取快照,然后搜索Foo
,发现并没有表示其已经被回收
而后将WeakMap
改为Map
重新获取快照,发现Foo
没有被回收
这个方式可以很直观的表明WeakMap
的弱引用
以上就是weakMap为什么是弱引用原理的详细内容,更多关于weakMap为什么是弱引用的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341