Skip to content

MS_BrowserMemoryLeak

nishi_74322014 edited this page Aug 3, 2026 · 1 revision

WWWブラウザのメモリ・リーク

概要

WWWブラウザのメモリ・リークの調査。

詳細

  • ブラウザ・タイプ別。
  • 基本的に、F12 で開発者ツール(デベロッパー・ツール)が開き、
    そこで、WWWブラウザのメモリ・リークの調査が可能。

調査の基本手順(共通)

  1. 開発者ツールの Memory(メモリ)パネルでヒープ スナップショットを取得。
  2. リークを疑う操作(画面遷移・開閉など)を数回繰り返す。
  3. もう一度スナップショットを取得し、2つを比較して増え続けているオブジェクトを探す。
  4. そのオブジェクトの保持パス(Retainers / Dominators) を辿り、参照を握っている箇所を特定する。

JavaScript 側の典型的な原因

原因 内容
イベント リスナーの解除漏れ addEventListener したまま DOM を破棄。
detached DOM DOM から外したノードを JS 変数が掴んだまま。
グローバル変数・キャッシュ 追加しっぱなしの配列や Map。
タイマー setInterval の解除漏れ。
クロージャ 不要になった大きなオブジェクトを閉じ込めている。

※ 対策としては、解除処理をコンポーネントの破棄時に必ず走らせること、
キャッシュに WeakMap / WeakRef を使うことなど。

IE11

※ 旧 IE では、DOM(COM)と JScript エンジンの間の循環参照が GC で回収されないという固有のリークがあった(IE6〜8)。
IE11 デスクトップ アプリは 2022年に提供終了。

Edge / Chrome

Chromium ベースのため、開発者ツールの操作は共通。

※ 「Performance monitor」で JS ヒープ サイズ・DOM ノード数・
イベント リスナー数をリアルタイムに監視でき、
操作を繰り返して右肩上がりになるかを見るのが手早い。

Firefox

about:memory で、より詳細なメモリ内訳レポートを取得できる。

参考


Tags: 障害対応, 性能, デバッグ

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally