Heap jest zwykle podzielony na młodą i starą generację: większość obiektów szybko umiera, więc sprzątanie young gen jest częste i tanie (minor GC). Obiekty żyjące dłużej są promowane; czyszczenie old gen jest rzadsze i zwykle droższe.
Odpowiedź zaawansowana
Głębiej
Na wysokim poziomie GC:
Znajduje obiekty osiągalne (mark).
Zwalnia pamięć nieosiągalnych (sweep) i może kompaktować, by zmniejszyć fragmentację.
GC generacyjny wynika z „generational hypothesis”: większość obiektów szybko umiera. Dlatego heap dzieli się na:
Young gen (Eden + survivor): częste minor GC, zwykle tanie.
Old gen: rzadsze kolekcje (major/mixed), zwykle droższe.
Praktycznie
Alokacja bywa tania; koszt GC pojawia się jako pauzy i narzut CPU.
Kolektory (G1, ZGC, Shenandoah) różnie balansują throughput vs pause-time.
Typowe pułapki
Mylenie z C++ i „wyjściem ze scope” (GC działa po osiągalności).