使用mongodb-memory-server时Jest出现内存泄漏问题求助
使用mongodb-memory-server时Jest保留setup文件上下文导致内存泄漏
我在使用mongodb-memory-server时发现,setup文件的上下文会被意外保留,目前还没定位到具体原因,唯一线索是Jest似乎通过底层的Symbol(JEST_STATE_SYMBOL)属性留存了上下文。
复现数据
master分支:使用--inspect-brk参数时,Jest记录的堆内存从38MB增至41MB;不使用该参数时,从37MB增至71MBadvanced分支:无论是否使用--inspect-brk参数,堆内存都会从52MB增至104MB
(上述数值均为Jest记录的堆内存使用量)
快照拍摄时机为Jest输出Waiting for the debugger to disconnect...之后,测试中途拍摄快照也能得到类似结果。使用的测试命令为:
node --inspect-brk --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage
已尝试的解决手段
- 处理
get-port中的定时器:- 直接移除
mongodb-memory-server依赖的get-port里的setInterval代码段,内存泄漏情况有所缓解:Chrome堆快照从229MB(含定时器)降至67MB(移除后),但仍有一个上下文被保留,Jest报告的堆内存稳定在约57MB - 替代方案:不在
get-port中注释代码,而是在对应代码块后添加clearInterval(interval),效果类似,但堆内存稳定性稍差(从52MB增至55MB)
- 直接移除
- 在
setup.js中将mongoServer(或mongoServer._instanceInfo)设为undefined:无任何效果
内容的提问来源于stack exchange,提问作者hasezoey
相关产品推荐
相关产品推荐

