foreach - JavaScript の連続書き込み中にメモリ リークの問題が発生するのはなぜですか?
伊谢尔伦
伊谢尔伦 2017-05-19 10:22:13
0
1
630

問題の説明:

図に示すように、検索中にメモリ リークの問題が発見されました:

15 回検索するとメモリが 15MB から 18MB に増加しました。これはかなり深刻です。

######トラブルシューティング######

デバッグと分析の後、最終的に問題のおおよその場所が特定されました: リーリー

grid.load()

以外をすべてコメントアウトし、0 回、1 回、10 回検索すると、結果は次のようになります:

メモリ検索の数が増加してもメモリは増加せず、メモリ リークの問題がないことがわかります。 そこで、

console

の問題だと思い、2 つの

console

をコメントアウトしたところ、結果は以下のようになりました (0 回、1 回、10 回の検索が続いています) :

問題はまだ残っています。コンソールの問題ではないことがわかります。実際、それを考えることは不可能です。しかし、調査では、基本的には応急処置のケースでした。 以下は基本的に、この段落によって引き起こされる問題を特定することができます。

リーリー

分析の場合、上記は 2 つの部分に分割できます: コントロール配列の取得と組織データの走査です。

リーリー

取得と走査を分割してテストした後、図に示すように、問題はなくなりました。

最後の質問

コントロールを取得して関数内でトラバースする 2 つの方法 書き方1:

リーリー

書き方2:

リーリー

最初の方法ではメモリ リークが発生するのに、2 番目の方法ではメモリ リークが発生しないのはなぜですか?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(1)
迷茫

これは必ずしもメモリ リークではなく、gc がリサイクルしていない可能性があります。最初の書き方では、ステートメントが終了しておらず、すべての dom が参照され続ける必要があります。2 番目の点では、前のステートメントが終了しています。 、gc が dom をリサイクルした可能性がありますが、テストの回数と時間だけでは、最初の書き方が正しいかどうかを判断することはできず、最終的に dom はリサイクルされません。

15.9 と 15.6 のデータを比較する必要があります。表の左上隅にある比較が表示されます。これは、15.9 と 15.6 の詳細を比較します。は継続参照を表します。複数回実行してもメモリが減らない場合はメモリリークと判断できます。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!