2012-09-12 11 views

Odpowiedz

17

Generowanie GC odnosi się do liczby kolekcji śmieci, które dany obiekt przeżyje.

Wszystkie obiekty rozpoczynają się w generowaniu 0. Gdy następuje zbieranie śmieci i nie można zebrać obiektu N generacji, zostaje ono przeniesione do generowania N + 1.

Generacje są używane do optymalizacji wydajności zbierania śmieci. Jest to generalnie prawda, że ​​pokolenie 0:

  1. to niewielki ułamek całej sterty wielkości
  2. posiada wiele obiektów krótkotrwały.

W związku z tym, gdy odbywa się wywóz śmieci, śmieciarz zaczyna od zbierania pokolenia 0, które będzie szybkie. Jeśli można zwolnić wystarczającą ilość pamięci, nie trzeba patrzeć na starsze pokolenia, a zatem gromadzenie danych może odbywać się szybko.

Książki można pisać na ten temat; ale na początek jest kilka świetnych szczegółów w this article lub reference here.

+0

Driis: - "Nie trzeba patrzeć na starsze pokolenia" oznacza? Dostaję tutaj to, że jeśli jest wystarczająco dużo pamięci, to Generation N i N + 1 nie będą wyglądały ... czy to prawda czy coś mi brakuje? –

+0

+1. @RahulTripathi, istnieją tylko 3 generacje (0, 1, 2), które mają określone zestawy reguł, gdy każde pokolenie jest włączone do kolekcji. Linki dostarczone przez driis (i każdy artykuł, który widziałem do tej pory) zawierają szczegółowe informacje na temat każdego pokolenia. –

+0

@RahulTripathi tak, a jak komentuje Aleksiej, są generacje 0, 1 i 2. Mówi się, że obiekty w generacji 2 są długowiecznymi obiektami. – driis

Powiązane problemy