我在环回中对API进行了压力测试,这是用Babel编译的。但是,在这些较长时间的“冒烟”测试中,我们已经看到堆分析中的需求缓存变得非常大(高达1gb)并且没有得到GCd。
我理解要求缓存不会GC直到最后一个引用被删除,但是如果我一遍又一遍地调用同一组方法,为什么它会继续增长呢?
这可能是Babel 6或NodeJS 4.4.3的问题吗?
以下是显示堆转储的屏幕截图
答案 0 :(得分:0)
我们遇到了类似的问题,即堆填充和用看起来像旧源代码的字符串填充服务一样。问题最终成为Babel缓存(服务用户的~/.babel.json
)。每次重新启动该应用程序时,该文件都会增长2MB左右,最终达到200MB以上,然后我们的内容开始崩溃。删除文件并为服务设置以下环境变量可以解决我们的问题:BABEL_DISABLE_CACHE=1
(堆从600MB减少到80MB)。