Allocation Profiler ツールの使用方法

Meggin Kearney 氏
Meggin Kearney

割り当てプロファイラ ツールを使用して、適切にガベージ コレクションが行われていないオブジェクトを見つけてメモリを保持します。

ツールの仕組み

割り当てプロファイラは、ヒープ プロファイラの詳細なスナップショット情報と、タイムライン パネルの増分更新およびトラッキングを組み合わせたものです。これらのツールと同様に、オブジェクトのヒープ割り当てをトラッキングするには、記録の開始、一連のアクションの実行、分析のための記録の停止が含まれます。

このツールは、記録中にヒープのスナップショットを定期的(50 ミリ秒ごと)に取得し、記録の最後に最後のスナップショットを取得します。

Allocation Profiler

割り当てプロファイラを有効にする

割り当てプロファイラの使用を開始するには:

  1. 最新の Chrome Canary を使用していることを確認します。
  2. デベロッパー ツールを開き、右下の歯車アイコンをクリックします。
  3. [Profiler] パネルを開くと、「Record Heap Allocations」というプロファイルが表示されます。

ヒープ割り当ての記録プロファイラ

ヒープ割り当てプロファイルの読み取り

ヒープ割り当てプロファイルは、オブジェクトの作成場所を示し、保持パスを識別します。以下のスナップショットでは、上部のバーはヒープ内で新しいオブジェクトが検出されたタイミングを示しています。

各棒の高さは、最近割り当てられたオブジェクトのサイズに対応し、棒の色は、それらのオブジェクトが最終的なヒープ スナップショットでまだ存在しているかどうかを示します。青色のバーは、タイムラインの最後にまだ存続しているオブジェクトを示します。グレーのバーは、タイムライン中に割り当てられたが、ガベージ コレクションの対象になったオブジェクトを示します。

Allocation Profiler のスナップショット

以下のスナップショットでは、アクションが 10 回実行されています。このサンプル プログラムは 5 つのオブジェクトをキャッシュに保存しているため、最後の 5 つの青色のバーが想定されています。ただし、左端の青いバーは潜在的な問題を示しています。

次に、上のタイムラインのスライダーを使用して特定のスナップショットにズームインし、その時点で最近割り当てられたオブジェクトを確認できます。

スナップショットをズームインする

ヒープ内の特定のオブジェクトをクリックすると、ヒープ スナップショットの下部にその保持ツリーが表示されます。オブジェクトへの保持パスを調べることで、オブジェクトが収集されなかった理由を理解するのに十分な情報を得ることができ、必要なコードに変更を加えて不要な参照を削除できます。

メモリ割り当てを関数ごとに表示する

JavaScript 関数ごとにメモリ割り当てを表示することもできます。詳しくは、関数によるメモリ割り当ての調査をご覧ください。