メモリー・リーク分析

デベロッパーツールによってページのメモリリークを決定

タイムラインの一つであり、フックにすることでMemoryオプション、次のコードを実行するよりも数倍以上、GitHubの

1 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
VAR X = [];

関数createSomeNodes(){
VARのDIV、
I = 100、
FRAG = document.createDocumentFragment()。
用(; I> 0; i--){
DIV =のdocument.createElement( "DIV")。
div.appendChild(document.createTextNode(I + " - " +新しいDate()toTimeString()));
frag.appendChild(DIV)。
}
のdocument.getElementById( "ノード")のappendChild(FRAG)。
}
関数は、(){成長
x.push(新しいアレイ(1000000).join(X ''));
createSomeNodes();
setTimeout(1000年、成長)。
}

私たちは、メモリ使用量の後に何度もクリックして見てみる

と、我々は、通常のメモリ・マップを見て

比較すると、我々は、曲線のアップ非常に明確なメモリリークがあることを見ることができ、時間とメモリリークがあることを証明ガベージコレクション、と減少しません。

それともも可能profilesメモリリークの場合録音ヒープ割り当てパネルが観察

ガベージコレクタの代わりに青の列がメモリ部を再利用しませんが、青の列の多くを見ることができ、より大きな、より多くのメモリリークの代わりに青の列を深刻

ポジショニングの問題

開きprofiles、パネルの最初のプログラムを実行する前に、メモリのスナップショットを取得した後、いくつかのメモリのスナップショットを獲得するための時間の期間のためのプログラム待機を実行します。

私たちは、最初にメモリのスナップショットの意味を説明します

  1. オブジェクトのコンストラクタコンストラクタの名前
  2. 回復へのルートオブジェクトからの距離
  3. オブジェクトオブジェクトの数を数えます
  4. メモリの浅いサイズ浅いサイズを直接保持された物体の大きさを表します。JS通常保持オブジェクトを記述するための標準は、直接DRAMと論理値(属性値)に格納されています。通常の状況下でしかない文字列であるべきであり、配列型は大きな浅いサイズを有することができます。
  5. 保持サイズ保持サイズは、現在のオブジェクトが破棄されるとき、メモリのこの部分が解放される占有他のオブジェクトによって参照される現在のオブジェクトのメモリサイズを表します。

その後、我々は概要の比較(比較)を選択してクリック

&HTMLDivElement我々のコード列に比べ、驚異的な記憶を持っているとメモリリークに確かに長期保有のdivリード文字列を見ることができます

私たちはする文字列をクリックして

見ることがx in Window / localhost:63342 @473517メモリリークが発生し、ウィンドウ上で変数をxは見つけることができます

概要

メモリの一般的な性能は、タイムラインのシーン後に再シーンによって問題を決定するために、いくつかの時間ページカトンのための使用の漏れ、及び、特定のリークポイントを標的とするためにメモリのスナップショットと組み合わせます。

オリジナル:大列  メモリリーク分析


おすすめ

転載: www.cnblogs.com/chinatrump/p/11611968.html