Arka plan çöp toplama
Arka plan çöp toplamada (GC), 2. nesil toplama işlemi devam ederken kısa ömürlü nesiller (0 ve 1) gerektiği gibi toplanır. Arka plan çöp toplama işlemi, iş istasyonu veya sunucu GC'sine bağlı olarak bir veya daha fazla ayrılmış iş parçacığında gerçekleştirilir ve yalnızca 2. nesil koleksiyonlar için geçerlidir.
Arka plan çöp toplama varsayılan olarak etkindir. .NET Framework uygulamalarında gcConcurrent yapılandırma ayarıyla veya .NET Core ve .NET 5 ve üzeri uygulamalarda System.GC.Concurrent ayarıyla etkinleştirilebilir veya devre dışı bırakılabilir.
Not
Arka plan çöp toplama eşzamanlı çöp toplamanın yerini alır ve .NET Framework 4 ve sonraki sürümlerde kullanılabilir. .NET Framework 4'te yalnızca iş istasyonu çöp toplama için desteklenir. .NET Framework 4.5'den başlayarak, hem iş istasyonuhem de sunucu çöp toplama için arka plan çöp toplama kullanılabilir.
Arka plan atık toplama sırasında kısa ömürlü nesiller üzerinde bir koleksiyon ön plan çöp toplama olarak bilinir. Ön plan çöp toplama işlemleri gerçekleştiğinde, tüm yönetilen iş parçacıkları askıya alınır.
Arka plan çöp toplama işlemi devam ederken ve 0. nesilde yeterli nesne ayırdığınızda, CLR bir nesil 0 veya 1. nesil ön plan çöp toplama işlemi gerçekleştirir. Ayrılmış arka plan çöp toplama iş parçacığı, ön plan çöp toplama isteği olup olmadığını belirlemek için sık güvenli noktalarda denetler. Varsa, ön plan çöp toplamanın gerçekleşebilmesi için arka plan koleksiyonu kendini askıya alır. Ön plan çöp toplama işlemi tamamlandıktan sonra, ayrılmış arka plan çöp toplama iş parçacıkları ve kullanıcı iş parçacıkları devam eder.
Arka plan çöp toplama, eşzamanlı çöp toplama tarafından uygulanan ayırma kısıtlamalarını kaldırır çünkü arka plan atık toplama sırasında kısa süreli çöp toplama işlemleri gerçekleşebilir. Arka plan çöp toplama kısa ömürlü nesillerdeki ölü nesneleri kaldırabilir. Ayrıca, 1. nesil çöp toplama sırasında gerekirse yığını genişletebilir.
Arka plan iş istasyonu ve sunucu GC karşılaştırması
.NET Framework 4.5'den başlayarak, sunucu GC'sinde arka plan çöp toplama özelliği kullanılabilir. Arka plan GC, sunucu çöp toplama için varsayılan moddur.
Arka plan sunucusu çöp toplama işlevleri arka plan iş istasyonu çöp toplamaya benzer, ancak birkaç fark vardır:
Arka plan iş istasyonu çöp toplama, ayrılmış bir arka plan çöp toplama iş parçacığını, arka plan sunucusu çöp toplama ise birden çok iş parçacığı kullanır. Genellikle her mantıksal işlemci için ayrılmış bir iş parçacığı vardır.
İş istasyonu arka plan atık toplama iş parçacığından farklı olarak, arka plan sunucusu GC iş parçacıkları zaman aşımına uğradı.
Aşağıdaki çizimde ayrı, ayrılmış bir iş parçacığında gerçekleştirilen arka plan iş istasyonu çöp toplama işlemi gösterilmektedir:
Aşağıdaki çizimde ayrı, ayrılmış iş parçacıklarında gerçekleştirilen arka plan sunucusu çöp toplama işlemi gösterilmektedir:
Eşzamanlı çöp toplama
İpucu
Bu bölüm şunlar için geçerlidir:
- İş istasyonu çöp toplama için .NET Framework 3.5 ve öncesi
- Sunucu çöp toplama için .NET Framework 4 ve öncesi
Eşzamanlı çöp, sonraki sürümlerde arka plan çöp toplama ile değiştirilir.
İş istasyonunda veya sunucu çöp toplamada, iş parçacıklarının toplama süresinin büyük bir bölümü boyunca çöp toplamayı gerçekleştiren ayrılmış bir iş parçacığıyla eşzamanlı olarak çalışmasını sağlayan eşzamanlı çöp toplamayı etkinleştirebilirsiniz. Bu seçenek yalnızca 2. nesildeki çöp toplamalarını etkiler; 0. ve 1. nesiller her zaman eşzamanlı olmayanlardır çünkü bunlar hızlı biter.
Eşzamanlı çöp toplama, bir koleksiyon için duraklamaları en aza indirerek etkileşimli uygulamaların daha hızlı yanıt vermesine olanak tanır. Yönetilen iş parçacıkları, eşzamanlı çöp toplama iş parçacığı çalışırken çoğu zaman çalışmaya devam edebilir. Bu tasarım, çöp toplama işlemi gerçekleşirken daha kısa duraklamalarla sonuçlanır.
Eş zamanlı çöp toplama işlemi ayrılmış bir iş parçacığında gerçekleştirilir. Varsayılan olarak, CLR hem tek işlemcili hem de çok işlemcili bilgisayarlarda eşzamanlı çöp toplama etkinleştirilmiş iş istasyonu çöp toplamayı çalıştırır.
Aşağıdaki çizimde, ayrı bir ayrılmış iş parçacığında gerçekleştirilen eşzamanlı çöp toplama gösterilmektedir.