为什么节点需要缓存填满和泄漏

时间:2016-04-14 16:14:36

标签: node.js caching babeljs loopbackjs

我在环回中对API进行了压力测试,这是用Babel编译的。但是,在这些较长时间的“冒烟”测试中,我们已经看到堆分析中的需求缓存变得非常大(高达1gb)并且没有得到GCd。

我理解要求缓存不会GC直到最后一个引用被删除,但是如果我一遍又一遍地调用同一组方法,为什么它会继续增长呢?

这可能是Babel 6或NodeJS 4.4.3的问题吗?

以下是显示堆转储的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:0)

我们遇到了类似的问题,即堆填充和用看起来像旧源代码的字符串填充服务一样。问题最终成为Babel缓存(服务用户的~/.babel.json)。每次重新启动该应用程序时,该文件都会增长2MB左右,最终达到200MB以上,然后我们的内容开始崩溃。删除文件并为服务设置以下环境变量可以解决我们的问题:BABEL_DISABLE_CACHE=1(堆从600MB减少到80MB)。