【发布时间】:2021-08-08 12:48:42
【问题描述】:
我在使用 jest 测试时记录了堆使用情况,因为我们的 jest 测试(60 多个测试用例和 250 个测试)在我们的 ci 中导致 137 内存不足异常。
管理部门问我有关内存泄漏的问题,因为节点进程在机器上运行时使用了大约 5GB 的 RAM。
我正在研究 jest 的堆使用情况以及如何调试它,所以我找到了这些堆快照,您可以在运行时使用 Chrome Inspektor 获取:
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 以及其他库的这种多重加载是否正常?
- 我可以通过其他方式查找漏洞吗?
谢谢!
【问题讨论】:
标签: javascript reactjs memory-management jestjs heap-memory