Allocation Profiler ツールを使用して、適切にガベージ コレクションされていないオブジェクトを見つけ、メモリを保持したままにします。
ツールの仕組み
割り当てプロファイラは、ヒープ プロファイラの詳細なスナップショット情報と、タイムライン パネルの増分更新およびトラッキングを組み合わせます。これらのツールと同様に、オブジェクトのヒープ割り当てを追跡するには、記録を開始し、一連のアクションを実行してから、分析のために記録を停止します。
このツールは、記録中に定期的(50 ミリ秒ごと)にヒープ スナップショットを取得し、記録終了時に最後のスナップショットを 1 回取得します。
Allocation Profiler を有効にする
Allocation Profiler の使用を開始するには:
- 最新の Chrome Canary がインストールされていることを確認します。
- デベロッパー ツールを開き、右下の歯車アイコンをクリックします。
- [Profiler] パネルを開くと、「Record Heap Allocations」というプロファイルが表示されます。
ヒープ割り当てプロファイルを読み取る
ヒープ割り当てプロファイルは、オブジェクトの作成場所と保持パスを示します。以下のスナップショットでは、上部のバーは、ヒープ内で新しいオブジェクトが見つかったことを示します。
バーの高さは、最近割り当てられたオブジェクトのサイズに対応し、バーの色は、それらのオブジェクトが最終的なヒープ スナップショットでライブ状態にあるかどうかを示します。青色のバーは、タイムラインの最後にまだライブ状態のオブジェクトを示します。灰色のバーは、タイムライン上に割り当てられたものの、ガベージ コレクションが行われたオブジェクトを示します。
以下のスナップショットでは、操作が 10 回行われています。このサンプル プログラムは 5 つのオブジェクトをキャッシュに保存するため、最後の 5 つの青いバーが想定されています。左端の青いバーは潜在的な問題があることを示しています。
上のタイムラインのスライダーを使用して特定のスナップショットを拡大すると、その時点で最近割り当てられたオブジェクトを表示できます。
ヒープ内の特定のオブジェクトをクリックすると、ヒープ スナップショットの下部に保持ツリーが表示されます。オブジェクトの保持パスを調べると、オブジェクトが収集されなかった理由を理解するのに十分な情報が得られ、必要なコードを変更して不要な参照を削除できます。
関数ごとにメモリ割り当てを表示する
JavaScript 関数ごとにメモリ割り当てを表示することもできます。詳細については、関数ごとにメモリ割り当てを調査するをご覧ください。