首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认的存档回忆录功能是内存泄漏的危险吗?

默认的存档回忆录功能是内存泄漏的危险吗?
EN

Stack Overflow用户
提问于 2016-07-26 21:24:35
回答 2查看 8.6K关注 0票数 21

我想使用memoize,但我担心缓存将无限期地增长,直到悲伤的时候发生。

我无法通过谷歌/堆栈溢出搜索找到任何东西。

我用的是v4。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-27 03:11:04

除非指定了不同的缓存类型,否则Lodash将保留所有回忆录数据。

默认缓存是lodash的MapCache:

https://github.com/lodash/lodash/blob/4.14.0/lodash.js#L1968

回传值存储在不同的数据结构中,具体取决于密钥是否适合散列(以及ES6映射在环境中是否可用):

如果您查看所有这些数据结构的set方法,您会注意到没有提供任何类似LRU等的内容:

票数 14
EN

Stack Overflow用户

发布于 2016-07-27 04:20:54

简短的回答是否定的。

当您使用memoize函数时,您接受的合同如下:

  1. 该函数将只在给定的参数下调用一次。
  2. 只要有必要保证#1 (永远),缓存就会留在那里。

因此,只有永远保存数据的实现才能满足需求。

经常被混淆的是“内存泄漏”和内存的“低效”使用。

在这种情况下--如果这对你来说是个问题,那么当它对你的算法有好处的时候,你就有责任重新创建一个回忆录函数。因为只有你知道什么时候这样做是安全的,而且它不能自动完成。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38600119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档