13

我来自 Java 世界,并且有很多(本地)内存缓存的实现。此外,在 Java 世界中还有SoftReferenceWeakReference,根据定义,它们是缓存实现的理想选择。

我知道 JavaScript 没有类似的东西,所以我想知道是否有可能具有某种缓存功能,如果存在“低内存压力”,它将删除/释放(所有)缓存对象。到目前为止,我知道lru-cache模块,但它的实现将对象保存到某个数量/大小,这很好,但还不够好,因为如果没有足够的内存,你自然会期望缓存释放对象.

当进程内存不足时,甚至可以从系统中获取 NodeJS 中的某些事件吗?

或者可能是一些可以引发事件的库,例如:

var cmmm = require('cool_memory_management_module');

cmmm.on('low_memory', function(){
    //signaling to clear cache entries
});

到目前为止,我已经找到了npm memwatchnpm 使用模块,但仍然无法将所有这些部分组合在一起。

4

1 回答 1

5

JS 中还没有WeakReferences 或类似的,但应该在ES6(版本列表)中出现。

到目前为止,现在您可以构建一些东西,每隔几秒钟检查一次内存是否耗尽并清理您的地图。

setInterval(function() {
    /* check if memory low and do something */
}, 2000).unref();
于 2014-01-23T21:30:34.523 回答