Bellek ve span ile ilgili türler
.NET Core 2.1'den başlayarak.NET, bitişik, kesin olarak belirlenmiş rastgele bellek bölgesini temsil eden bir dizi birbiriyle ilişkili tür içerir. Bu modüller şunlardır:
System.Span<T>, belleğin bitişik bir bölgesine erişmek için kullanılan bir tür. Bir Span<T> örnek, stackalloc ile ayrılmış bir arabellek veya yönetilmeyen belleğin işaretçisi türündeki
T
Stringbir dizi ile yedeklenebilir. Yığında ayrılması gerekdiğinden, bir dizi kısıtlaması vardır. Örneğin, bir sınıftaki bir alan türünde Span<T>olamaz veya zaman uyumsuz işlemlerde kullanılabilir.System.ReadOnlySpan<T>, yapının sabit bir sürümü Span<T> .
System.Memory<T>, belleğin bitişik bir bölgesi üzerinde bir sarmalayıcı. Bir Memory<T> örnek, türünde
T
bir dizi veya bir veya bir Stringbellek yöneticisi tarafından yedeklenebilir. Yönetilen yığında depolanabildiği için sınırlamaları Memory<T>Span<T>yoktur.System.ReadOnlyMemory<T>, yapının sabit bir sürümü Memory<T> .
System.Buffers.MemoryPool<T>, bir bellek havuzundan bir sahipe kesin olarak belirtilmiş bellek blokları ayırır. IMemoryOwner<T> örnekleri çağrılarak havuzdan kiralanabilir ve çağrılarak MemoryPool<T>.RentMemoryPool<T>.Dispose()havuza geri bırakılabilir.
System.Buffers.IMemoryOwner<T>, bir bellek bloğunun sahibini temsil eder ve yaşam süresi yönetimini denetler.
MemoryManager<T>, güvenli tanıtıcılar gibi ek türler tarafından yedeklenebilmesi için uygulamasını Memory<T>Memory<T> değiştirmek için kullanılabilecek soyut bir temel sınıf. MemoryManager<T> gelişmiş senaryolar için tasarlanmıştır.
ArraySegment<T>, belirli bir dizinden başlayan belirli sayıda dizi öğesi için sarmalayıcı.
System.MemoryExtensions, dizeleri, dizileri ve dizi kesimlerini bloklara Memory<T> dönüştürmek için bir uzantı yöntemleri koleksiyonu.
System.Span<T>, System.Memory<T>ve bunların salt okunur karşılıkları, bellek kopyalamayı veya yönetilen yığına gerekenden daha fazla ayırmayı önleyen algoritmaların oluşturulmasına izin verecek şekilde tasarlanmıştır. Bunları oluşturmak (veya oluşturucuları aracılığıyla Slice
) temel alınan arabellekleri yinelemeyi içermez: yalnızca sarmalanan belleğin "görünümünü" temsil eden ilgili başvurular ve uzaklıklar güncelleştirilir.
Not
Önceki çerçeveler Span<T> için ve Memory<T>System.Memory NuGet paketinde kullanılabilir.
Daha fazla bilgi için ad alanına System.Buffers bakın.
Bellek ve span ile çalışma
Bellek ve span ile ilgili türler genellikle verileri bir işleme işlem hattında depolamak için kullanıldığından, geliştiricilerin , Memory<T>ve ilgili türleri kullanırken Span<T>bir dizi en iyi yöntemi izlemesi önemlidir. Bu en iyi yöntemler MemoryT< ve SpanT><> kullanım yönergelerinde belgelenmiştir.