Gecikme modları

Nesneleri geri kazanmak için, atık toplayıcının (GC) bir uygulamada yürütülen tüm iş parçacıklarını durdurması gerekir. Atık toplayıcının etkin olduğu süre, gecikme süresi olarak adlandırılır.

Bir uygulamanın verileri alması veya içerik görüntülemesi gibi bazı durumlarda, tam çöp toplama kritik bir zamanda gerçekleşebilir ve performans engellenebilir. Özelliğini değerlerden birine System.Runtime.GCLatencyMode ayarlayarak GCSettings.LatencyMode çöp toplayıcının müdahaleciliğini ayarlayabilirsiniz.

Düşük gecikme süresi ayarları

"Düşük" gecikme süresi ayarı kullanmak, çöp toplayıcının uygulamanıza daha az müdahalede bulunmasını sağlar. Çöp toplama, belleği geri kazanma konusunda daha muhafazakardır.

Numaralandırma System.Runtime.GCLatencyMode iki düşük gecikme süresi ayarı sağlar:

  • GCLatencyMode.LowLatency 2. nesil koleksiyonları bastırır ve yalnızca 0. ve 1. nesil koleksiyonlar gerçekleştirir. Yalnızca kısa süreler için kullanılabilir. Uzun süreler boyunca, sistem bellek baskısı altındaysa, atık toplayıcı uygulamayı kısa süre duraklatabilecek ve zaman açısından kritik bir işlemi kesintiye uğratabilecek bir toplama tetikler. Bu ayar yalnızca iş istasyonu çöp toplama için kullanılabilir.

  • GCLatencyMode.SustainedLowLatency ön plan 2. nesil koleksiyonları bastırır ve yalnızca 0. nesil, 1. ve arka plan 2. nesil koleksiyonlar gerçekleştirir. Daha uzun süre kullanılabilir ve hem iş istasyonu hem de sunucu çöp toplama için kullanılabilir. Arka plan çöp toplama devre dışı bırakıldıysa bu ayar kullanılamaz.

Düşük gecikme sürelerinde, aşağıdakiler gerçekleşmediği sürece 2. nesil koleksiyonlar gösterilmez:

  • Sistem, işletim sisteminden düşük bellek bildirimi alır.

  • Uygulama kodu, yöntemini çağırarak GC.Collect ve parametresi için 2 belirterek bir koleksiyon oluşturur generation .

Senaryolar

Aşağıdaki tabloda, değerleri kullanmaya GCLatencyMode yönelik uygulama senaryoları listelenir:

Gecikme modu Uygulama senaryoları
Batch Kullanıcı arabirimi (UI) veya sunucu tarafı işlemleri olmayan uygulamalar için.

Arka plan çöp toplama devre dışı bırakıldığında, bu iş istasyonu ve sunucu çöp toplama için varsayılan moddur. Batchmodu ayrıca gcConcurrent ayarını geçersiz kılar, yani arka plan veya eşzamanlı koleksiyonları engeller.
Interactive Kullanıcı arabirimi olan çoğu uygulama için.

Bu, iş istasyonu ve sunucu çöp toplama için varsayılan moddur. Ancak, bir uygulama barındırılıyorsa, barındırma işleminin çöp toplayıcı ayarları önceliklidir.
LowLatency Atık toplayıcıdan kaynaklanan kesintilerin kesintiye neden olabileceği kısa vadeli, zamana duyarlı işlemlere sahip uygulamalar için. Örneğin, animasyonları veya veri alma işlevlerini işleyen uygulamalar.
SustainedLowLatency Atık toplayıcıdan gelen kesintilerin kesintiye neden olabileceği, kapsanan ancak daha uzun bir süre için zamana duyarlı işlemlere sahip uygulamalar için. Örneğin, işlem saatlerinde piyasa verileri değiştikçe hızlı yanıt sürelerine ihtiyaç duyan uygulamalar.

Bu mod, diğer modlardan daha büyük bir yönetilen yığın boyutuna neden olur. Yönetilen yığını sıkıştırmadığından daha yüksek parçalanma mümkündür. Yeterli belleğin kullanılabilir olduğundan emin olun.

Düşük gecikme süresi kullanma yönergeleri

GCLatencyMode.LowLatency modunu kullanırken aşağıdaki yönergeleri göz önünde bulundurun:

  • Süreyi mümkün olan en kısa sürede düşük gecikme süresinde tutun.

  • Düşük gecikme sürelerinde yüksek miktarda bellek ayırmaktan kaçının. Atık toplama işlemi daha az nesneyi geri kazanacağından düşük bellek bildirimleri oluşabilir.

  • Düşük gecikme modundayken, özellikle büyük nesne yığınına ve sabitlenmiş nesnelere yapılan ayırmalar gibi yeni ayırmaların sayısını en aza indirin.

  • Ayırabilecek iş parçacıklarına dikkat edin. LatencyMode Özellik ayarı işlem genelinde olduğundan, OutOfMemoryException ayıran herhangi bir iş parçacığında özel durumlar oluşturulabilir.

  • Düşük gecikmeli kodu kısıtlanmış yürütme bölgelerine sarmalayın. Daha fazla bilgi için bkz . Kısıtlanmış yürütme bölgeleri.

  • yöntemini çağırarak GC.Collect(Int32, GCCollectionMode) düşük gecikme süresi süresi boyunca 2. nesil koleksiyonları zorlayabilirsiniz.

Ayrıca bkz.