弱引用原理下,WeakMap为何能实现对象自动垃圾回收?
- 内容介绍
- 文章标签
- 相关推荐
本文共计559个文字,预计阅读时间需要3分钟。
目录+前言+弱引用应用+vs+强引用应用+Map+vs+WeakMap+前言+聊一聊WeakMap+弱引用应用,WeakMap+强引用应用看了很多文章,发现说法不一,给出的demo经过尝试也是错误的,唉,难搞也 gotta搞+弱引用应用+vs+强引用应用+对象被强引用时不会删除
目录
- 前言
- 弱引用 vs 强引用
- Map vs WeakMap
前言
聊一下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为什么是弱引用的资料请关注自由互联其它相关文章!
本文共计559个文字,预计阅读时间需要3分钟。
目录+前言+弱引用应用+vs+强引用应用+Map+vs+WeakMap+前言+聊一聊WeakMap+弱引用应用,WeakMap+强引用应用看了很多文章,发现说法不一,给出的demo经过尝试也是错误的,唉,难搞也 gotta搞+弱引用应用+vs+强引用应用+对象被强引用时不会删除
目录
- 前言
- 弱引用 vs 强引用
- Map vs WeakMap
前言
聊一下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为什么是弱引用的资料请关注自由互联其它相关文章!

