单页应用运行越久越卡时应如何排查内存生命周期问题?
简答题困难585 次浏览
参考答案与解析
# 核心结论
单页应用运行越久越卡时,排查重点不是观察某一时刻的内存数值,而是验证完成相同业务循环并执行垃圾回收后,内存基线、对象数量和文档节点数能否回到稳定区间。应固定操作路径,例如反复进入和退出页面、打开和关闭弹窗、切换图表,再比较多轮堆快照、分配时间线、节点数量和主线程轨迹。真正的内存泄漏是已经失去业务价值的对象仍能通过引用链从垃圾回收根到达;短期增长、缓存预热或垃圾回收尚未发生,并不能直接证明泄漏。
# 底层机制
垃圾回收器依据对象是否仍然可达决定能否释放,而不知道业务是否还需要它。全局数组或映射、闭包、事件监听器、定时器、Promise 回调、观察器、订阅系统、未终止的请求以及第三方库注册表,都可能继续持有页
