GC temelleri
Çöp toplayıcının (GC) nasıl çalıştığını ve nesilleri öğrenirsin.
Çöp toplayıcı nedir?
GC (garbage collector, çöp toplayıcı), .NET'te yönetilen belleği otomatik yöneten çalışma zamanı bileşenidir. Nesneleri ömürlerine göre üç nesle (generation) ayırır: Gen 0, Gen 1 ve Gen 2.
Yeni nesneler Gen 0'da başlar. Bir toplama sırasında hayatta kalırsa bir üst nesle terfi eder. Gen 2'deki nesneler uzun ömürlüdür ve seyrek toplanır; bu yaklaşım kısa ömürlü nesnelerin hızla geri kazanılmasını sağlar.
Toplama ve terfi
GC tetiklendiğinde önce Gen 0'ı toplar. Gen 0'da hayatta kalan nesneler Gen 1'e terfi eder. Bellek yeterli değilse Gen 1 ve Gen 2 de toplanır.
Bu yaklaşıma ephemeral (kısa ömürlü) toplama denir; maliyeti düşüktür çünkü çoğu nesne kısa ömürlüdür. Uzun ömürlü nesnelerden kaçınmak GC baskısını azaltır.
Uygulama Neslini yazdır
Bir object o = new object(); oluştur. int gen = GC.GetGeneration(o); ile neslini al. Console.WriteLine($"Nesil: {gen}"); ile yazdır.
Örnek çözümü göster
{gen}"); yaz.
Örnek çözüm:
using System;
class Program
{
static void Main()
{
object o = new object();
int gen = GC.GetGeneration(o);
Console.WriteLine($"Nesil: {gen}");
}
}
Kendini test et
-
Yeni oluşturulan bir nesne hangi nesilde başlar?
- Gen 2
- Gen 0
- Gen 1
- Gen 3
Cevabı göster
Gen 0 — Doğru. Tüm yeni nesneler Gen 0'da başlar ve hayatta kalırsa terfi eder.
-
Nesil bilgisini al
int gen = GC.____(o);Cevabı göster
int gen = GC.GetGeneration(o); -
Bir nesne Gen 0 toplamada hayatta kalırsa ne olur?
- Silinir
- Bellekten kaldırılır
- Gen 1'e terfi eder
- Hiçbir şey
Cevabı göster
Gen 1'e terfi eder — Doğru. Hayatta kalan nesneler bir üst nesle terfi eder.