問題タブ [gc-roots]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - スタックガベージはJavaで収集されますか?
ヒープ メモリは Java でガベージ コレクションされます。
スタックガベージも収集されますか?
スタックメモリはどのように再利用されますか?
.net - ルーツは何ですか?
ガベージコレクションのルーツは何ですか?
ルートの定義を「プログラムがアクセスできる任意の参照」と読みました。ライブの定義は、使用されているオブジェクトであり、ローカル変数、静的変数の場合があります。
ルートオブジェクトとライブオブジェクトの違いを区別することとは少し混乱しています。
ルートへのパスとは何ですか?ルートオブジェクトとライブオブジェクトはどのように機能しますか?
誰かが詳しく説明できますか?
c# - GC ルートとローカル変数
タイマーのドキュメントを見ているときに、次のコメントで次の例に出くわしました。
これは、副作用があったとしても、C# の GC がローカル変数のガベージ コレクションを許可されていることを意味しますか? おそらく、後で再びタイマーにアクセスしていないため、GCはそれをより早く収集できますか?
これを正しく理解していれば、私がそのような最適化のファンであるかどうかはわかりません(しかし、おそらくそうではありません;))
java - ガベージコレクターはどのようにルートを識別しますか
マーク スイープ ガベージ コレクターの最初のフェーズは、ヒープ上のすべてのライブ オブジェクトをマーク (検索) することです。これを行うには、すべてのマーキングが始まる開始点またはルートが必要です。GC はそのようなルートをどのように識別しますか?
c - Cでガベージコレクションのルートを見つける
Cで単純なマークアンドスイープガベージコレクターを実装しようとしています。アルゴリズムの最初のステップは、ルートを見つけることです。だから私の質問は、Cプログラムのルーツをどのように見つけることができるかということです。
mallocを使用するプログラムでは、カスタムアロケータを使用します。このカスタムアロケータは、Cプログラムから呼び出されるすべてのものであり、カスタムinit()の場合もあります。
ガベージコレクターは、プログラム内のすべてのポインター(ルート)が何であるかをどのように知るのですか?また、カスタムタイプのポインターが与えられた場合、その中のすべてのポインターをどのように取得しますか?
たとえば、クラスリストを指すポインタpがあり、その中に別のポインタがある場合は、qと言います。ガベージコレクターはそれをどのように認識し、マークを付けることができますか?
更新:初期化するときにすべてのポインター名とタイプをGCに送信するとどうなりますか?同様に、GCがツリーをトラバースできるように、さまざまなタイプの構造を送信することもできます。これは正気のアイデアでさえありますか、それとも私はただ夢中になっていますか?
compiler-construction - スタックマシンでgcルートを見つける方法は?
私はかなり標準的なスタック マシン用のコンパイラを書いています。ここで、ガベージ コレクターを追加します。各アクティベーション レコードでどの変数が gc ルートであるかを知るために、ある種の「スタック マップ」を生成できることがわかります。ただし、実行中にスタックにプッシュされた中間値を処理する方法がわかりません。私がコンパイルしている言語は Pascal に似ているので、タグを使用して他のデータ型からのポインターを識別する必要はありません。
方法に関するヒント/ポインタをいただければ幸いです
- 任意の時点でスタック内の gc ルートを見つけます (つまり、スタックにプッシュされた中間値のどれが gc ルートであるかを識別する方法)。
- この情報をエンコードする通常の形式 (つまり、「スタック マップ」を生成してエンコードする方法)
どうもありがとうございました!ニコラス
java - Java ガベージ コレクション - ルート ノードのセットを見つける
すべてのガベージ コレクションの開始時に、GC スレッドはルート ノードのセット、つまり到達可能性階層の最上位にあるオブジェクトを把握する必要があります。このプロセスがどのように達成されるか知っている人はいますか? スタック フレームのプッシュ/ポップ時にリストが維持され、新しいオブジェクトが追加/削除されますか? JVM はスタックをスキャンし、何がオブジェクトで何がそうでないかを判断しますか (そうであれば、どのように?)? また、プロセス中に利用可能な静的メンバーはどうですか?どうにかしてリストに追加されますか?
情報をありがとう。
java - GC ルートとしてのスレッド
GC ルートについて質問があります。GC ルートの 1 つが「ライブ スレッド」であることを読みました。どういう意味ですか?
各スレッドには独自のスタックがあり、スタックのローカル変数はスレッドの GC ルートであるという印象を常に持っていましたが、今では混乱しています。フレーム スタックまたはネイティブ スタック上にない、スレッド表現に含まれるオブジェクト参照には、他にどのような種類がありますか?
もう 1 つの質問は、若い世代のコレクションが GC ルートを使用するのか、それとも主要なアルゴリズム専用なのかということです。
ありがとう
更新: 申し訳ありませんが、簡単にするために: 私はこの短い記事を読みました: yourkit.com/docs/java/help/gc_roots.jsp と GC ルートとして「スレッド」オプションがあります。それはそのスレッドを正確に意味しますGCルートですか?スレッド GC ルートによって参照され、そのスタックによって参照されないオブジェクトの種類は何ですか? これらの 2 つのカテゴリが異なるのはなぜですか。
garbage-collection - .net GC のカード テーブルと書き込みバリア
.Net のガベージ コレクション プロセスで、カード テーブルの概念と書き込みバリアを説明できる人はいますか? これらの用語の説明、つまり、それらが何であるか、どのように役立つか、GC にどのように参加するかについての説明を得ることができません。どんな助けでも本当に感謝しています。
java - 非静的フィールドが GC ルートとして機能しないのはなぜですか?
私が知っているように、静的フィールド (スレッド、ローカル変数、メソッド引数、JNI 参照と共に) は GC ルートとして機能します。
これを確認するリンクを提供することはできませんが、それに関する多くの記事を読みました.
非静的フィールドが GC ルートとして機能できないのはなぜですか?