4

私はあなたのほとんどが私に を指摘することを知っていますchrome profiler heap snapshotが、空のページ (js なし、css なし、html>body のみ) では、8 MB のヒープ サイズが表示され、12 から 30,000 個のオブジェクトが彼の気分に依存するため、このタスクにはまったく役に立たないツールです。 、そして、このヒープ プロファイラは、事実ではなく、それが示すデータについて独自の謙虚な意見を持っていると思いますが、残りの chrome 開発ツールは素晴らしいものです。

基本的に、私のバックボーン 1page アプリは、考えられるすべてのガベージ コレクション ダンスを実行し、ほとんどのオブジェクトをJSON.stringify(Obj).lengthスローaction not secureし、それらのゾンビを試行錯誤するよりも簡単に追跡する方法を実行しているにもかかわらず、メモリ内で成長し続けます。

4

1 に答える 1

6

あなたはChrome開発者ツールをディスリスペクトしますが、私が知る限り、それらはあなたが得た最高のものです。あなたはそれらを慎重に使用する必要があります。

アプリケーションのアクションによってメモリリークが発生するかどうかをテストするとします。ビューのレンダリング、またはいくつかの新しいデータのフェッチである可能性があります。これをと呼びましょうAction

予約されているメモリの量と保持されているメモリの量を確認するには、最初に測定可能なベースラインを取得し、ノイズを取り除く必要があります。これらを実現するには、3つのステップが必要です。

  1. 準備し始める

    アプリケーションを起動します(Webサイトに移動します)。実行しActionます。ヒープスナップショットを作成します。このスナップショットは破棄されますが、GCが実行され、クリーンな状態になります。ウォームアップにより、測定可能なデータ(スクリプトの評価、リソースの非同期読み込みの初期読み込みなど)にファズが発生しないようにすることもできます。

  2. ベースライン

    Action3回実行します。ヒープスナップショットを作成します。これは、メモリの保存と保持を比較するベースラインです。Action実行パスに小さな変動がある場合に備えて、適切な平均を取得するために3回実行します。Action毎回まったく同じ方法で繰り返すようにしてください。

  3. 計測

    Action3回実行します。ヒープスナップショットを作成します。

これで、3つのスナップショットが作成されます。最初のものは破棄されますが、私たちにとって興味深いのは、スナップショット2と3の間に割り当てられたオブジェクトの概要と、スナップショット3からスナップショット2へのデルタ比較です。これらのビューは、プロファイルの下部/ステータスバーから見つけることができます。見る。

スナップショット2と3の間に割り当てられたオブジェクト

ベースライン測定のシェイプショットの間に表示されるデータは、の真のメモリプロファイルですAction。その後、データを正しく解釈する方法を知る必要があります。そのために、プロファイラーに関するGoogleのドキュメントをお勧めします。

現時点では、これ以上のツールや方法はないと思います。もしそうなら、私はそれについて聞きたいです。

于 2013-01-23T15:14:42.720 に答える