答えて
GCは、ヒープがいっぱいの場合にのみ発生します。 ガベージコレクタが起動すると、 が実行され、 というヒープ内のすべてのオブジェクトがガベージであるという前提が成立します。 つまり、アプリケーションのルーツの は、 ヒープ内のオブジェクトを参照していないものとします。今度は、 ガーベッジコレクタは のルーツを歩き始め、すべての オブジェクトがルートから到達可能なグラフを作成し始めます。 の例では、 は、 をヒープ内のオブジェクトに示すグローバル変数を見つけることができます。
次の図は アプリケーション根OBJ4とOBJ5 2参照 オブジェクトObj1と、OBJ2とアプリケーション ルートに直接1参照 いくつかの割り当てられたオブジェクトとヒープを示しています。 のすべてのオブジェクトは グラフの一部になります。 アプリケーションルート1のオブジェクトObj2を追加する場合、このオブジェクトが オブジェクトObj7を参照していることを通知するコレクタ も、 グラフに追加されます。コレクタは、到達可能なすべてのオブジェクト を再帰的に移動し続けます( )。 alt text http://www.c-sharpcorner.com/UploadFile/ankithakur/GCAlgorithm12222005224854PM/Images/GC.gif
...続きここhere
他のリンクのカップルは、あなたがガベージコレクションに読んで取得する、次のとおりです。
GCの基本的な考え方は次のとおりです。
==========================================
すべてのアプリケーションには一連のルーツがあります。ルートは、管理対象ヒープ上のオブジェクトまたはヌルに設定されているオブジェクトを参照する格納場所を識別します。
たとえば、
- アプリケーション内のすべてのグローバルおよび静的オブジェクトポインタ。 - スレッドのスタック上のローカル変数/パラメータオブジェクトポインタ。 - 管理対象ヒープ内のオブジェクトへのポインタを含むすべてのCPUレジスタ。 - アクティブルートのリストは、ジャストインタイム(JIT)コンパイラおよび共通言語ランタイムによって維持され、ガベージコレクタのアルゴリズムにアクセス可能になり
Freachableキューからオブジェクトへのポインタ
- 1. Node.jsのガベージコレクタ
- 2. Libgdx強制ガベージコレクタ
- 3. JAVAマルチスレッド、メモリリーク、ガベージコレクタ
- 4. ガベージコレクタとデストラクタ
- 5. Java:オブザーバパターンとガベージコレクタ
- 6. Androidタッチイベントリストとガベージコレクタ
- 7. androidのガベージコレクタ2.3
- 8. ガベージコレクタとプール
- 9. ガベージコレクタのコピー
- 10. Javaのガベージコレクタ発生
- 11. V8ガベージコレクタの障害
- 12. Xcode:ガベージコレクタの設定
- 13. ListViewアイテムonClickListenerとガベージコレクタ
- 14. AutoZoneガベージコレクタの使用
- 15. JSガベージコレクタとWebCore VM
- 16. ガベージコレクタと静的クラス、変数
- 17. Cでのガベージコレクタの監視
- 18. Java匿名クラスとガベージコレクタ
- 19. どのようにガベージコレクタは
- 20. Java 8のデフォルトのガベージコレクタ
- 21. AS3のガベージコレクタのオブジェクトをアンロード
- 22. Solrのガベージコレクタへの影響
- 23. Boehmガベージコレクタの正確なモード
- 24. .netガベージコレクタのプロファイル方法?
- 25. スレッドの作成スコープとガベージコレクタ
- 26. データベース接続上のJavaガベージコレクタ
- 27. RADでガベージコレクタを実行
- 28. ガベージコレクタの対象オブジェクトの数
- 29. ガベージコレクタのないプロジェクトosx
- 30. 異なるガベージコレクタをC#