.NET Core (C#) İleri Seviye Bellek & Performans

Span<T> ve Memory<T>: Sıfır Bellek Tahsisi (Zero-Allocation Performance)

String substring veya dizi bölmelerinde yeni kopya üretmeden belleğe doğrudan pencere açmaktır.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Koca bir kitaptan bir paragraf okumak istediğinde o sayfayı fotokopi çekmek yerine parmağınla o satırın altını çizip okumaktır.

Teknik & Mimari Tanım

Span<T> bir ref struct olup yalnızca Stack'te yaşar ve bitişik bellek bloklarına (array, string, native memory) güvenli, bounds-checked bir pencere (view) açar. Heap'te yeni nesne tahsis edilmediği için GC baskısı sıfıra iner. Asenkron metotlarda ise Stack kısıtı nedeniyle Memory<T> kullanılır.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

“Span<T>, bellek üzerinde sıfır tahsis (zero-allocation) ile dizi veya metin manipülasyonu yapmayı sağlar. Substring() yeni bir string nesnesi allocate ederken, AsSpan() sadece bir işaretçi ve uzunluk tutarak GC Gen 0 yükünü tamamen ortadan kaldırır.”

.NET Core (C#) Örnek Uygulaması
string data = "DATE:2026-10-24;VALUE:42";
ReadOnlySpan<char> span = data.AsSpan();
ReadOnlySpan<char> datePart = span.Slice(5, 10); // HEAP TAHSİSİ YOK!
int year = int.Parse(datePart.Slice(0, 4));
Mülakat Tuzağı & Adayların En Sık Yaptığı Hata:

Span<T>'yi async metotlarda veya Task içinde kullanmaya çalışmak (ref struct olduğu için heap'e taşınamaz, derleme hatası verir).