Jest 似乎不受节点 --max-old-space-size 选项的影响

Eri*_*ill 20 memory-leaks heap-memory node.js jestjs

我一直在努力克服运行此处描述的笑话时明显的内存泄漏:https://github.com/facebook/jest/issues/7874

我想给 jest 一大堆堆空间,以便我的测试能够在泄漏的情况下完成。但是,使用此命令行:

node --max-old-space-size=8192 --expose-gc ./node_modules/.bin/jest --no-cache --runInBand --logHeapUsage
Run Code Online (Sandbox Code Playgroud)

当堆使用量约为 1500MB 时,我仍然遇到“Javascript 堆内存不足”的情况。如果我运行:

节点 --max-old-space-size=8192

然后执行以下操作:

> v8.getHeapStatistics()
{
   ...
   heap_size_limit: 8640266240
   ...
}
Run Code Online (Sandbox Code Playgroud)

很明显我可以影响节点的堆大小。但不知怎的,这并没有影响笑话。

节点:16.13.0 笑话:27.4.4 有什么想法吗?

小智 2

也许您的以下设置之一jest.config.js可以为您解决此问题:

{
    maxWorkers: 1,
    globals: {
        'ts-jest': {
            isolatedModules: true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我记得和你有同样的问题,我用所有这些配置解决了它。不确定哪一部分是最重要的,但我想说,尝试一下吧。