You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么JavaScript中变量arr无法被GC(垃圾回收)?

内存泄漏原因分析

这段代码里的arr无法被GC回收,核心原因是Chrome DevTools的调试追踪机制导致的意外引用持有:

  • 代码中调用了emptyFn(arr),虽然emptyFn是个空函数,没有使用传入的arr参数,但当你在Chrome中开启DevTools的内存监控(比如录制堆快照、使用内存分析工具)时,V8引擎会为了支持调试回溯,保留函数调用栈的快照数据,其中就包含了本次调用时传入的arr参数引用。
  • 这个由调试机制生成的栈帧快照被DevTools持续持有,导致arr始终存在可达引用,无法被垃圾回收器回收。
  • 补充:代码中invoke函数挂载到window的__options对象,其内部的回调函数并未引用arr,因此这部分不是内存泄漏的原因。

如果关闭DevTools或者在非调试环境下运行这段代码,arr会被正常回收。

内容的提问来源于stack exchange,提问作者geoffzhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:52:08