现代浏览器基本都是采用标记清除法的垃圾回收方式,而es6中weakmap和和weakse的作用基于引用计数法的垃圾回收,那么其应用场景在哪里?
JavaScript垃圾回收是一种内存管理技术。在这种技术中,不再被引用的对象会被自动删除,而与其相关的资源也会被一同回收。
Map和Set中对象的引用都是强类型化的,并不会允许垃圾回收。这样一来,如果Map和Set中引用了不再需要的大型对象,如已经从DOM树中删除的DOM元素,那么其回收代价是昂贵的。
为了解决这个问题,ES6还引入了另外两种新的数据结构,即称为WeakMap和WeakSet的弱集合。这些集合之所以是“弱的”,是因为它们允许从内存中清除不再需要的被这些集合所引用的对象。
使用场景:储存 DOM 节点,而不用担心这些节点从文档移除时,会引发内存泄漏。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
应用场景:
Vue3 响应式部分中有所应用,传送门如下:
https://github.com/vuejs/vue-next/blob/master/packages/reactivity/src/reactive.ts#L48
另外,在我这篇专栏中https://blog.csdn.net/weixin_37352936/article/details/113151589对浏览器的垃圾回收机制有所介绍,可以参考。
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y