知識社群登入
位置: 艾鍗學院 Blog > 專業論壇 > 討論
[Android實作問題] is it to exist 2 instances or 1 in memory ?
1樓
Hello Jarey,

請教一個問題,這在記憶体會存在二個物件實例 ,還是只有一個物件實例呢?
class TestA
{

  TestB b;
   
  void fun1()
  {
     b = new TestB();
     b.var = 1;
  }

  void fun2()
  {
     b = new TestB();
     b.var = 2;
  }
}

Thank you
小K
2樓
只要有使用到new關鍵字, Class Loader就會從Class類別實體化一個新的物件到記憶體中,

你呼叫fun1與fun2都會重新new一個TestB(),這將會導致一直不斷的重新建構新的物件,應該說

每次呼叫就會產生新的實體物件在記憶體中,而舊的物件因為不會有人去參照. (因為你的參照變數

b 會重新指到新建的物件去,舊的物件自然就沒人指向它了,所以當記憶體快不足時,GC會跑去來

把你先前建過的所有沒有被人參照的TestB物件一口氣回收掉。

當然跑GC是要耗費資源的.