【发布时间】:2016-08-06 07:52:42
【问题描述】:
我正在对使用 Babel 转译的环回 API 进行压力测试。然而,在这些较长的“冒烟”测试中,我们看到堆分析中的 require 缓存变得非常大(高达 1gb)并且没有获得 GCd。
我知道 require 缓存在最后一个引用被删除之前不会 GC,但是如果我一遍又一遍地调用同一组方法,为什么它会继续增长?
这可能是 Babel 6 或 NodeJS 4.4.3 的问题吗?
这是显示堆转储的屏幕截图
【问题讨论】:
-
require 缓存只是一个以路径为键的对象。您确定从模块中导出的某些对象不会无限制地增长并显示为与需要缓存相关,因为您导出了它?
-
我不确定。我最大的堆项目是“(字符串)”,它包含所有缓存的代码,并且似乎在增长而不是 GC。我会用屏幕截图更新我的帖子。如果是每次导出,除非导出发生变化,否则此缓存是否仍会保持?还是我误解了这个堆数据?
标签: node.js caching babeljs loopbackjs