問題背景
PR #430(已關閉)嘗試解決 Hook handler 累積問題,但 scope 太大被關閉。現有 WeakSet guard 只能阻擋相同 API 實例,無法防止新的 API 實例重複註冊。
現有 PR #603 修復了 5 個核心 memory leak,但仍有殘餘風險需要三階段預防性修復。
三階段方案(v5.0)
Phase 1:Hook Event 去重(~40 行)
在每個 internal hook handler 入口加入 _dedupHookEvent 檢查。
Phase 2:Heavy Resources 重用(~110 行)
使用 singleton pattern,確保 heavy 資源只初始化一次,stop() 時完整清理 8 個資源。
Phase 3:Backup Timer 防漏(~35 行)
加入 _backupTimerActive flag + _stopBackupTimer() await。
實作順序
- Phase 1(最小 scope,~40 行)
- Phase 2(需要理解現有資源建立流程)
- Phase 3(與 backup 邏輯整合)
相關連結
問題背景
PR #430(已關閉)嘗試解決 Hook handler 累積問題,但 scope 太大被關閉。現有 WeakSet guard 只能阻擋相同 API 實例,無法防止新的 API 實例重複註冊。
現有 PR #603 修復了 5 個核心 memory leak,但仍有殘餘風險需要三階段預防性修復。
三階段方案(v5.0)
Phase 1:Hook Event 去重(~40 行)
在每個 internal hook handler 入口加入 _dedupHookEvent 檢查。
Phase 2:Heavy Resources 重用(~110 行)
使用 singleton pattern,確保 heavy 資源只初始化一次,stop() 時完整清理 8 個資源。
Phase 3:Backup Timer 防漏(~35 行)
加入 _backupTimerActive flag + _stopBackupTimer() await。
實作順序
相關連結