2012-09-12 37 views

回答

17

GC生成涉及一個對象有多少垃圾收集存活。

所有對象都從第0代開始。當發生垃圾回收並且無法收集第N代對象時,它將移至第N + 1代。

這些世代用於性能優化垃圾收集。這是通常正確的一代0:

  1. 是整個堆的大小一小部分
  2. 有很多短命的對象。

因此,當發生垃圾回收時,垃圾回收器首先收集第0代,這將很快。如果可以釋放足夠的內存,就不需要看老一代,因此收集可以很快發生。

書可以寫關於主題;但首先,在this articlereference here中有一些很棒的細節。

+0

Driis: - 「不需要看老一代」是指?我在這裏得到的是,如果有足夠的內存,那麼N代和N + 1將不會被查找..是正確的還是我錯過了什麼? –

+0

+1。 @RahulTripathi,只有3代(0,1,2),每一代都包含在集合中時,它們都有特定的規則集。 driis提供的鏈接(以及我迄今爲止看到的任何文章)都會詳細介紹每一代。 –

+0

@RahulTripathi是的,正如阿列克謝評論的那樣,有0代,1代和2代。第2代中的對象被認爲是長壽命的對象。 – driis