私はGCを初めて使用し、変数によって参照されなくなった参照以外に、ガベージコレクターが何を収集するのか疑問に思っていますか?以下は私がチェックしたいリストです
- プリミティブ型(int、double、float、char ....)はGCされますか?
- 静的変数はGCされますか?
- 最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?
- すべてのメソッド(静的および非静的の両方)はGCされますか?
- スレッドはGCされますか?
私はGCを初めて使用し、変数によって参照されなくなった参照以外に、ガベージコレクターが何を収集するのか疑問に思っていますか?以下は私がチェックしたいリストです
GCは参照を収集せず、到達できなくなったオブジェクト(ヒープ上のメモリ)を解放するだけです。
静的は特別なメモリ位置であり、クラス/クラスローダーに関連付けられています。クラス/クラスローダーがデプロイされていない場合、静的コンテンツはメモリから削除されます。
プリミティブ型がオブジェクト(クラス変数)に関連付けられている場合、オブジェクトに到達できないときにそれらはGCされます。
ローカル変数/パラメータ変数の場合、それらはスタック上にあるため、メソッドの実行が完了するとすぐに再利用されます。
オブジェクト(インスタンス)のみがガベージコレクションを取得でき、それ以外は収集できません。
キーワードstatic
はガベージコレクションとは何の関係もありません。
ガベージコレクションはオブジェクト専用です。
•プリミティブ型(int、double、float、char ....)はGCされますか?-プリミティブ型はオブジェクトですか?番号。
•静的変数はGCされますか?-変数オブジェクトです、はい。
•最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?-いいえ、GC-edは取得されません
•すべてのメソッド(静的および非静的の両方)はGCされますか?-メソッドとクラス定義はメモリを使用しますが、GCによって管理されるメモリは使用しません。これは、最終的に自由に作成および破棄されるJVMのタイプに基づいています。
•スレッドはGCされますか?-はい、スレッドはオブジェクトであるため、GCされます。
ガベージコレクタはヒープでのみ機能します。これを考えると、静的変数を除外できます。
プリミティブ型(int、double、float、char ....)はGCされますか?それらが属するオブジェクトがGC-edを取得した場合、それらはGC-edを取得します
静的変数はGCされますか?いいえ
最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?それらが属するオブジェクトがGC-edを取得した場合、それらはGC-edを取得します
すべてのメソッド(静的および非静的の両方)はGCされますか?これはあまり意味がありません
スレッドはGCされますか?それらがもう参照されていないオブジェクトである場合、はい
ガベージコレクションは、ヒープに割り当てられたオブジェクト(。を介して作成されたすべてのオブジェクト)に対して機能しますnew
。
new Integer(..)
、ここでのボックス化とボックス化解除についてはよくわかりません。JVMにはオブジェクトを管理するための特定の指示があるため、いいえと言います。run()
ため、GCを実行できます。GCは、プログラム内に参照がないメモリスペースのみを収集するため、定義上、GCによるプリミティブの収集は実行できません。オブジェクトを参照でき、その需要を変更できる変数はすべて収集できるため、状況によっては静的変数を収集できますが、最終的にはできません。メソッドGC-edが何を意味するのか想像できません。一般的な答えでは、メソッドはGC-edされるオブジェクト状態の一部ではないと言う必要があります。
ガベージコレクションは大きなトピックであり、おそらくスタックオーバーフローの答えには大きすぎます。ガベージコレクションハンドブックと呼ばれる主題に関する良い本があります。