2026-02-25 · JavaScript

找出並修正事件監聽器造成的記憶體洩漏

一則單頁應用程式每次重開分頁就膨脹 40 MB 的事後檢討。

前言

脫離文件的節點、被閉包抓住的監聽器、從未清除的計時器。文章帶著你在 DevTools 中重現並量測問題,最後重構元件讓它能乾淨地解除註冊。

現場筆記

在處理 JavaScript 問題的過程中,反覆看到的幾個模式:

  • 簡單的版本撐過了每次重構,聰明的版本沒有。
  • 邊做邊寫的文件,比事後補寫的耐用得多。
  • 同一個問題第二次出現時,它就已經是模式了——幫它命名吧。

可以直接抄的檢查清單

  • 問題可以用一行指令重現。
  • 修正附帶一個沒有它就會失敗的測試。
  • 作者本人以外的人也在自己的機器上跑過。

結語

寫下未來的自己真的會讀的短版本——這就是全部的訣竅。