【发布时间】:2014-10-23 10:10:56
【问题描述】:
我想在 JavaScript 中缓存大对象。这些对象是通过键检索的,缓存它们是有意义的。但它们不会一次全部放入内存中,所以我希望在需要时对它们进行垃圾收集 - GC 显然知道得更好。
使用其他语言中的WeakReference 或WeakValueDictionary 制作这样的缓存非常简单,但在ES6 中我们使用WeakMap 代替,其中键 很弱。
那么,是否有可能制作类似 WeakReference 的东西或从 WeakMap 制作垃圾收集缓存?
【问题讨论】:
-
在 JC 中是 assumed, that an object is immediately collected when it is no more needed。因此,使用 WeakRefs 进行缓存没有任何意义。如果您需要缓存大型对象,请使用浏览器的缓存(如果它们来自服务器)或sessionStorage。在 Node 环境中使用 Redis 或 Memcached。
标签: javascript caching garbage-collection ecmascript-6 ecmascript-harmony