Garbage-collected cache via Javascript WeakMaps

caching, ecmascript-6, ecmascript-harmony, garbage-collection, javascript

Solution

is it possible to make WeakReference from WeakMap or make garbage-collected cache from WeakMap ?

AFAIK the answer is "no" to both questions.

Problem

I want to cache large objects in JavaScript. These objects are retrieved by key, and it makes sense to cache them. But they won't fit in memory all at once, so I want them to be garbage collected if needed - the GC obviously knows better. It is pretty trivial to make such a cache using `WeakReference` or `WeakValueDictionary` found in other languages, but in ES6 we have `WeakMap` instead, where keys are weak. So, is it possible to make something like a `WeakReference` or make garbage-collected caches from `WeakMap`?

Original source