給定下面的代碼。對象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
是null
以及在最後C
的主要方法塊僅僅是因爲他們pointting同一個對象設置objectOfA_In_C
到null
? objectOfA_In_C
和objectOfA_In_B
是否準備好從垃圾收集器收集?
因此,如果變量'objectOfA_In_B'在'B'中設置爲'null',那麼由'A'創建的唯一對象將準備好由GC收集。正確嗎? – Salman
@Salman - 是的,如果沒有對象的引用,那麼它將符合GC的條件。你可以重寫'finalize()'和*可以是*,你可以自己看到行爲 – TheLostMind
@TheLostMind - *也許*你可以看到行爲。有各種各樣的混雜因素可能意味着你沒有觀察到你期望觀察到的東西。 –