跳转至

待办 — dynamic-scraper.ts Map 慢泄漏

来源

v0.10.44 独立 audit agent 复审时发现("可疑点 S2")。优先级低,记下不立即修。

内容

src/utils/dynamic-scraper.ts:13-35 注册 webNavigation.onCompleted + webNavigation.onErrorOccurred 监听 <all_urls>,对每个用户浏览器 main_frame 导航写入 Map(tabStatustabError),但 tab 关闭时无 browser.tabs.onRemoved 清理

长期使用累积条目(普通用户每天浏览数百 tab)。

影响评估

维度 评估
每条 entry 大小 (number, number) 极小(< 100 字节)
累积速度 每个新 tab + 1 条
1 个月累积量 假设每天 200 tab → 6000 条 ≈ 600 KB
SW kill 频率 MV3 SW 闲置会 kill,kill 后 Map 重置 → 自动清零
实际危害 几乎可忽略(SW kill 已变相清理)

紧迫度:低

因为 MV3 SW 经常被 kill,Map 实际不会无限增长。但严格意义上是泄漏,应该修。

修法(未来做)

browser.tabs.onRemoved.addListener((tabId) => {
  tabStatus.delete(tabId);
  tabError.delete(tabId);
});

评估时机

  • 用户反馈"扩展用一段时间后变卡" → 立即处理
  • 否则下次 background 大改动时顺手修