[解決済み】JavaScriptのガベージコレクションとは何ですか?
質問
JavaScriptのガベージコレクションとは何ですか?Webプログラマーがより良いコードを書くために、JavaScriptのガベージコレクションについて理解することが重要なのでしょうか?
どのように解決するのですか?
Eric Lippert は 詳細なブログ記事 このテーマについて、少し前に(さらに、このテーマと比較するために VBScript ). より正確には、彼が書いたのは JScript これは、マイクロソフトが独自に実装した ECMAScript であり、JavaScript と非常によく似ています。Internet ExplorerのJavaScriptエンジンでも、大半の動作は同じだと考えてよいと思います。もちろん、ブラウザによって実装は異なりますが、共通する原則のいくつかを取り出して、他のブラウザに適用することは可能だと思います。
そのページより引用。
<ブロッククオートJScriptは世代交代しない マーク・アンド・スイープ・ガベージコレクタです。 これは はこのように動作します。
-
スコープ内にあるすべての変数。 をスカベンジャーと呼びます。 スカベンジャーは は、数値、オブジェクト、あるいは 文字列でも何でも。 私たちは、リスト 変数が移動されます。 を使用します。 スコープに入ったとき、そしてスコープから外れたとき スコープの外に出る。
-
時折、ガベージ コレクターが実行されます。 まず マークが表示されます。 文字列など、追跡されたすべてのメモリ GCによって (JScriptはVARIANT データ構造があり には未使用の余分なビットがたくさんあります。 そのため、そのうちの1つを設定するだけです。 を追加しました)。
-
2つ目は、マークをクリアすることで スカベンジャーと推移的閉包 スカベンジャーリファレンスの ですから、もし スカベンジャーオブジェクトは 非スカベンジャーオブジェクトをクリアします。 ビットは、ノンスキャベンジャーと、ノンスキャベンジャーの を参照しているものすべて。 (私は クロージャという言葉を使っています。 先程とは違う意味で 投稿)
-
この時点で、すべての マークされたメモリは、割り当てられた メモリに到達することはできません。 は、スコープ内のどの変数からのパスであっても すべての これらのオブジェクトは を破壊する。 循環参照
ガベージコレクションの主な目的は、プログラマが次のことを可能にすることです。 ない もちろん、ガベージコレクションを避けて通ることはできませんが、ガベージコレクションがどのように機能するかについて、少なくとも大まかな知識を持っておくことは常に有益なことです。
歴史的なメモ
への言及が誤っていました。
delete
演算子を使用します。JavaScriptでは
その
delete
演算子は、オブジェクトからプロパティを削除します。
とは全く別のものです。
delete
C/C++でいうところの
関連
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み】未定義のプロパティ 'forEach' を読み取ることができない
-
[解決済み】JavaScriptで関数が存在するかどうかを確認する方法は?
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない