JavaScriptReact项目中的高Jest堆内存使用率
我在用 jest 进行测试时记录了堆使用情况,因为我们的 jest 测试(60 多个测试用例和 250 个测试)在我们的 ci 中导致了 137 个内存不足异常。
管理人员问我关于内存泄漏的问题,因为节点进程在机器上运行时使用了大约 5GB 的 RAM。
我正在研究 jest 的堆使用情况,以及如何调试它,所以我找到了这些堆快照,您可以在运行时使用 Chrome Inspector 获取它们:
node --inspect-brk --expose-gc ./node_modules/react-scripts/node_modules/.bin/jest --runInBand --logHeapUsage
... or for create-react-app
yarn react-scripts --inspect-brk test --runInBand --logHeapUsage
这个堆使用的结果让我很困惑,但我发现了一些我知道的东西,例如 React-Dom 和 Lodash。
Lodash 和 React-Dom 等多次加载到该堆快照中是否正常?或者我们是否在我们的代码中实施了重大错误,导致这些 lodash、react-dom 等的多重加载。
首先,我在考虑不同的库版本,但由于Retained Size在同一个库的所有行中完全相同,我有点怀疑。
问题是:
- 通过这些数量的测试,玩笑使用 5GB RAM 是否正常?
- react-dom 和 lodash 以及其他库的这种多重加载正常吗?
- 我可以查看其他东西以找到泄漏吗?
谢谢!