我想使用memoize,但我担心缓存将无限期地增长,直到悲伤的时候发生。
我无法通过谷歌/堆栈溢出搜索找到任何东西。
我用的是v4。
发布于 2016-07-27 03:11:04
除非指定了不同的缓存类型,否则Lodash将保留所有回忆录数据。
默认缓存是lodash的MapCache:
https://github.com/lodash/lodash/blob/4.14.0/lodash.js#L1968
回传值存储在不同的数据结构中,具体取决于密钥是否适合散列(以及ES6映射在环境中是否可用):
如果您查看所有这些数据结构的set方法,您会注意到没有提供任何类似LRU等的内容:
发布于 2016-07-27 04:20:54
简短的回答是否定的。
当您使用memoize函数时,您接受的合同如下:
因此,只有永远保存数据的实现才能满足需求。
经常被混淆的是“内存泄漏”和内存的“低效”使用。
在这种情况下--如果这对你来说是个问题,那么当它对你的算法有好处的时候,你就有责任重新创建一个回忆录函数。因为只有你知道什么时候这样做是安全的,而且它不能自动完成。
https://stackoverflow.com/questions/38600119
复制相似问题