以下のコードがあります。オブジェクトobjectOfA_In_B
の最終的な価値は何ですか?オブジェクトの割り当てとJavaでのGCの動作
Class A
{
// Some parameters and method with complicated logic goes here
}
Class B
{
A objectOfA_In_B = new A();
B()
{
// Operation done on objectOfA
}
public A getObjectA()
{
return objectOfA_In_B;
}
}
Class C
{
public static void main(String[] args)
{
try
{
A objectOfA_In_C = null;
B objectOfB = new B();
objectOfA_In_C = B.getObjectA()
// Rest of logic goes here
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
objectOfA_In_C = null;
}
}
}
質問です:はobjectOfA_In_B
彼らは同じオブジェクトをpointtingされているというだけの理由C
のmainメソッドのfinallyブロックにnull
にobjectOfA_In_C
を設定することにより、同様null
でしょうか? objectOfA_In_C
とobjectOfA_In_B
の両方がガベージコレクタから収集される準備ができていますか?
変数 'objectOfA_In_B'が' B'で 'null'に設定されていると、' A'で作成されたオブジェクトだけがGCによって収集できる状態になります。正しい? – Salman
@サルマン - はい、オブジェクトへの参照がない場合は、GCに適格です。あなたは 'finalize()'をオーバーライドすることができ、*は*かもしれません。あなた自身が動作を見ることができます – TheLostMind
@TheLostMind - *多分*あなたは動作を見ることができます。あなたが観察することが期待されるものを観察しないことを意味する可能性のあるさまざまな混乱要因があります。 –