オブジェクトのJVMのメモリは、どのような状況下でゴミをリサイクルすることができますか?

トリガ・ヤングGC、古い年のフルの完全な新世代は旧GCをトリガします。GCは時に回収されることがガベージコレクタをリサイクルされます種類のオブジェクトのそれは特に何?

  1. 到達可能性解析アルゴリズムは、GCのルーツで引用されたか否かを決定するために
  2. 強い参照、柔らかい、弱い、レファレンスファントム参照:参照型の分析
  3. 呼び出すかどうかfinialize()自助の方法を

まず第一に、JVMが通過し、到達可能性解析アルゴリズムを回復することはないであろう、オブジェクトがリサイクルされるかを決定するために。オブジェクト、最大の層から到達可能性分析アルゴリズムのトリガが存在するかどうかを確認するために、それを参照誰分析するGCルーツ

オブジェクトを参照GCのルーツはゴミではありません。GCのルーツは、ローカル変数、または静的クラス変数を指します。特定のは、この記事を見ることができます:直接オブジェクトがGCのルーツを参照されていますか?

第二に、参照の参照型をJavaは強い参照、柔らかい、弱い、偽の参照と参照を持っています:

  • 強い参照、オブジェクトは強い参照が回収されることはありませんです
  • ソフト参照は、オブジェクトは、一般的に、ソフト参照され、その後、GCの十分後に任意のメモリがリサイクルされ、回復されません。
  • 参照されていない弱参照のような弱参照は、直接GCを回復しました。
  • Falseの引用、めったに参照にするために使用しない、無視することができます

全体的に:

  1. オブジェクトの存在GCのルーツを再利用することができない、何のオブジェクトがGCのルーツを回復することはできません
  2. そこGCのルーツオブジェクトは、それがソフトまたは弱参照が引用されている場合、そこには回収することができます

最後に、それはすぐにそれを回復することになるかどうかのオブジェクトは、GCのルーツを参照されていませんか?

必ずしもすぐに回復することが、クラスがオーバーライドすることができfinialize()た方法finialize()GCのルーツ再びオブジェクトへの参照を作る、あなたは自分自身を助けることができるようになります。

おすすめ

転載: www.cnblogs.com/shuiyj/p/12640702.html