Jest 泄漏为导入文件分配字符串的内存

ale*_*308 7 memory-leaks jestjs

我试图理解为什么我的笑话测试会泄漏内存,但我不知道原因是什么。看起来 jest 分配了大量的字符串(似乎是导入),但我不明白他们为什么这样做。

我开始禁用模块缓存的测试:

node --inspect-brk --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage --no-cache
Run Code Online (Sandbox Code Playgroud)

我得到以下输出: 在此输入图像描述 如您所见,为模块内容分配了大量的 MB。

知道如何尝试减少内存量吗?

Ren*_*ger 2

这个内存泄漏实际上是Node 的 vm.Script() 内存泄漏,目前还没有解决。无法合并此 PRvm.Script()的替换,因为它破坏了测试。但此更改已作为jest-runtime发布,可以用作临时解决方法。vm.compileFunctions()

不幸的是,这种解决方法似乎会扭曲代码覆盖率结果,至少在使用 v8 代码覆盖率提供程序时是这样。