検索

ホームページ  >  に質問  >  本文

JavaScript ガベージ コレクションとは何ですか?

<p>JavaScript ガベージ コレクションとは何ですか? Web プログラマーにとって、より良いコードを作成するには、JavaScript ガベージ コレクションの重要性を理解することが重要です。 </p>
P粉334721359P粉334721359560日前638

全員に返信(2)返信します

  • P粉033429162

    P粉0334291622023-08-18 09:23:54

    DOM オブジェクトに関しては、循環参照に注意してください:

    JavaScript におけるメモリ リーク パターン

    メモリはオブジェクトへのアクティブな参照がない場合にのみ再利用できることに注意してください。一部の JS エンジンは内部関数で実際に参照される変数をチェックせず、外側の関数のすべてのローカル変数を保持するだけなので、これはクロージャやイベント ハンドラーによくある落とし穴です。

    これは簡単な例です:

    リーリー

    イベント ハンドラーが存在する場合、単純な JS 実装は bigString を収集できません。この問題を解決するには、init() の最後に bigString = null を設定するなど、いくつかの方法があります (delete はローカル変数と関数に対しては機能しません)パラメータ: delete は、変数オブジェクトにアクセスできないときにオブジェクトからプロパティを削除します。厳密モードの ES5 は、ローカル変数を削除しようとすると ReferenceError をスローします!)。

    メモリ消費を気にする場合は、不必要なクロージャを避けることをお勧めします。

    返事
    0
  • P粉547170972

    P粉5471709722023-08-18 00:17:21

    Eric Lippert は、少し前に 詳細なブログ投稿 を書き、このトピックについて (さらに VBScript との比較も) 説明しました。より正確には、彼は JScript について書きました。これは、JavaScript に非常に似ていますが、Microsoft 独自の ECMAScript 実装です。 Internet Explorer の JavaScript エンジンでも動作のほとんどが同じであると考えてよいでしょう。もちろん、具体的な実装はブラウザごとに異なりますが、いくつかの共通原則を他のブラウザにも適用できると思います。

    このページから引用:

    ガベージ コレクションの主な目的は、プログラマが作成および使用するオブジェクトのメモリ管理について心配する必要がないようにすることです。もちろん、それが避けられない場合もあります。少なくともガベージ コレクションの仕組みについて一般的に理解しておくことは常に有益です。コレクション作品。

    歴史的メモ: 以前のバージョンの回答には、delete 演算子への誤った参照がありました。 JavaScript では、delete 演算子はオブジェクトからプロパティ を削除します。これは、C/C の delete とはまったく異なります。

    返事
    0
  • キャンセル返事