0

私はGCを初めて使用し、変数によって参照されなくなった参照以外に、ガベージコレクターが何を収集するのか疑問に思っていますか?以下は私がチェックしたいリストです

  • プリミティブ型(int、double、float、char ....)はGCされますか?
  • 静的変数はGCされますか?
  • 最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?
  • すべてのメソッド(静的および非静的の両方)はGC​​されますか?
  • スレッドはGCされますか?
4

7 に答える 7

3

GCは参照を収集せず、到達できなくなったオブジェクト(ヒープ上のメモリ)を解放するだけです。

静的は特別なメモリ位置であり、クラス/クラスローダーに関連付けられています。クラス/クラスローダーがデプロイされていない場合、静的コンテンツはメモリから削除されます。

プリミティブ型がオブジェクト(クラス変数)に関連付けられている場合、オブジェクトに到達できないときにそれらはGCされます。

ローカル変数/パラメータ変数の場合、それらはスタック上にあるため、メソッドの実行が完了するとすぐに再利用されます。

于 2012-08-07T21:04:42.493 に答える
0

オブジェクト(インスタンス)のみがガベージコレクションを取得でき、それ以外は収集できません。

  • 変数はオブジェクトではないため、gcされません
  • メソッドはオブジェクトではありません-gcはありません。
  • プリミティブ-オブジェクトではなく、gcなし
  • スレッド-スレッドクラスインスタンス:はい。

キーワードstaticはガベージコレクションとは何の関係もありません。

于 2012-08-07T21:02:46.113 に答える
0

ガベージコレクションはオブジェクト専用です。

•プリミティブ型(int、double、float、char ....)はGCされますか?-プリミティブ型はオブジェクトですか?番号。

•静的変数はGCされますか?-変数オブジェクトです、はい。

•最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?-いいえ、GC-edは取得されません

•すべてのメソッド(静的および非静的の両方)はGC​​されますか?-メソッドとクラス定義はメモリを使用しますが、GCによって管理されるメモリは使用しません。これは、最終的に自由に作成および破棄されるJVMのタイプに基づいています。

•スレッドはGCされますか?-はい、スレッドはオブジェクトであるため、GCされます。

于 2012-08-07T21:04:43.977 に答える
0

ガベージコレクタはヒープでのみ機能します。これを考えると、静的変数を除外できます。

  • プリミティブ型(int、double、float、char ....)はGCされますか?それらが属するオブジェクトがGC-edを取得した場合、それらはGC-edを取得します

  • 静的変数はGCされますか?いいえ

  • 最終変数はGC化されますか(不変としてマークされているため、収集するものは何もないと思います)?それらが属するオブジェクトがGC-edを取得した場合、それらはGC-edを取得します

  • すべてのメソッド(静的および非静的の両方)はGC​​されますか?これはあまり意味がありません

  • スレッドはGCされますか?それらがもう参照されていないオブジェクトである場合、はい

于 2012-08-07T21:05:11.797 に答える
0

ガベージコレクションは、ヒープに割り当てられたオブジェクト(。を介して作成されたすべてのオブジェクト)に対して機能しますnew

  • プリミティブオブジェクトについてはよくわかりません。オブジェクトで内部的に管理されている場合はGCになる可能性があります(たとえばnew Integer(..)、ここでのボックス化とボックス化解除についてはよくわかりません。JVMにはオブジェクトを管理するための特定の指示があるため、いいえと言います。
  • 静的変数はGCで処理できます。これは、静的なのは参照だけであり、参照されるオブジェクトではないためです。
  • 最終変数はGCで処理できますが、最終変数であるという事実は、プログラムがそれらへの参照を永久に必要とすることを意味するわけではありません。
  • メソッドとスレッドはそれ自体ではGCされませんが、この意味で、スレッドは常にメソッドを持つオブジェクトに含まれているrun()ため、GCを実行できます。
于 2012-08-07T21:06:14.580 に答える
0

GCは、プログラム内に参照がないメモリスペースのみを収集するため、定義上、GCによるプリミティブの収集は実行できません。オブジェクトを参照でき、その需要を変更できる変数はすべて収集できるため、状況によっては静的変数を収集できますが、最終的にはできません。メソッドGC-edが何を意味するのか想像できません。一般的な答えでは、メソッドはGC-edされるオブジェクト状態の一部ではないと言う必要があります。

于 2012-08-07T21:07:24.563 に答える
0

ガベージコレクションは大きなトピックであり、おそらくスタックオーバーフローの答えには大きすぎます。ガベージコレクションハンドブックと呼ばれる主題に関する良い本があります。

于 2012-08-07T21:08:52.773 に答える