2011-07-26 5 views
1

ガベージコレクションの効率性について:オブジェクトを意図的に参照してスコープから外れることには何らかの利点がありますか?特にObjectをnullに設定した場合、JVMは実際に何か異なる処理を行いますか?オブジェクトを参照してGCを向上させる

この考え方を発展させて、ソフトやファントムの参照をクリーンアップして、GC関連のパフォーマンスを向上させる努力をしていますか?私はファントムの参照の完全なコードは、GCがもちろん解決することができるよりも大きな問題を示していると推測しています。

答えて

2

の間に割り当てようとすると、逆参照されてスコープから外れるときだけです。

オブジェクトが大きい(または多くのデータの間接的な参照のみを保持する)でない限り、これはあまり役に立ちません。

0

明示的に間接参照するオブジェクトは、特定のメソッド呼び出しの終了時に範囲外になります。しかし、これが問題になる前に、コンパイラはおそらくエスケープ解析を実行し、それをプリミティブに分解します。ネットアウトは、コンパイラやガベージコレクタよりもスマートにならないようにしようとしています。ホットスポットが脅威を引き起こすにはあまりにも元気がないと思っているだけの慰めを取ってください。

1

まず、スコープから外れることはありませんが、特定のポイントであなたのゴミであるオブジェクトを作成し続けるコーディングコード(気づかずに)が終わることがあります。多くの人が思うよりも頻繁に起こるので、常にこのことに注目してください。

GCを助けることは、おそらく常に良い方法ですが、重要な結果は得られません。しかし世代別世代GCを考えると、新しい世代のオブジェクトよりも古いオブジェクトを削除する方がコストがかかるので、GCを助けることは重要です。

+0

+1若い人と古い人のことについては、私はそれを考慮していませんでした。 – JHarnach

関連する問題