node.js - 为什么 Node 需要缓存填满和泄漏

标签 node.js caching babeljs loopbackjs

我正在对使用 Babel 转译的环回 API 进行压力测试。然而,在这些较长的“冒烟”测试中,我们看到堆分析中的 require 缓存变得非常大(高达 1gb)并且没有得到 GCd。

我知道在删除最后一个引用之前 require 缓存不会 GC,但是如果我一遍又一遍地调用同一组方法,为什么它会继续增长?

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

这是显示堆转储的屏幕截图

enter image description here

最佳答案

我们遇到了一个似乎与堆填充和填充字符串类似的问题,这些字符串看起来像服务的旧源代码。问题最终出在 Babel 缓存(服务用户的 ~/.babel.json)。每次重新启动应用程序时,该文件都会增长约 2MB,并最终在我们的东西开始崩溃之前达到 +200MB。删除文件并为服务设置以下环境变量解决了我们的问题:BABEL_DISABLE_CACHE=1(堆从 600MB 下降到 80MB)。

关于node.js - 为什么 Node 需要缓存填满和泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36628540/

相关文章:

javascript - 在 ES6 中正确扩展数组/代理?

java - yarn 安装和构建消耗 100% CPU 和内存 95%

spring - 在 Spring MVC Rest 服务中缓存 HTTP 响应

sockets - 横向扩展套接字服务器

Npm:仅在作为依赖项安装时运行 postinstall 脚本

node.js - 尝试在 Windows 10 上安装 babel-preset-es2015 时出现 npm 错误 EEXIST

node.js - 在 Google App Engine 上部署 Vuejs - webpack webapp

java - 当共享 JDBC 缓存存储到位时,将 "numOwners"在 Infinispan 中设置为大于 1 是否有效?

javascript - 带有 Node 的 Babel 7

javascript - 使用 `this` 中的成员函数时,将 babel 类保留为 `setTimeout`