Uyarılmış Koleksiyonlar

Çoğu durumda, çöp toplayıcı bir toplama işlemi için en uygun zamanı belirleyebilir ve bunun bağımsız olarak çalışmasına izin vermelisiniz. Zorlamalı bir koleksiyonun uygulamanızın performansını artırabileceği nadir durumlar vardır. Bu gibi durumlarda, bir çöp toplamayı zorlamak için yöntemini kullanarak çöp toplamaya GC.Collect neden olabilirsiniz.

Uygulamanızın kodunda GC.Collect belirli bir noktada kullanılan bellek miktarında önemli bir azalma olduğunda yöntemini kullanın. Örneğin, uygulamanız çeşitli denetimleri olan karmaşık bir iletişim kutusu kullanıyorsa, iletişim kutusu kapatıldığında çağrılması Collect , iletişim kutusu tarafından kullanılan belleği hemen geri kazanarak performansı artırabilir. Atık toplayıcı nesneleri en uygun olmayan zamanlarda geri kazanmaya çalıştığında performansı düşürebileceğinden uygulamanızın atık toplamayı çok sık göndermediğinden emin olun. Bir sonraki bölümde açıklandığı gibi, yalnızca koleksiyon üretken olduğunda toplamak için yöntemine bir GCCollectionMode.Optimized numaralandırma değeri Collect sağlayabilirsiniz.

GC toplama modu

Zorlamalı koleksiyonun GC.Collect davranışını aşağıdaki gibi belirtmek için bir GCCollectionMode değer içeren yöntem aşırı yüklemelerinden birini kullanabilirsiniz.

GCCollectionMode Değer Açıklama
Default .NET'in çalışan sürümü için varsayılan çöp toplama ayarını kullanır.
Forced Çöp toplamayı hemen gerçekleşmeye zorlar. Bu, aşırı yüklemeyi çağırmaya GC.Collect() eşdeğerdir. Tüm nesillerin tam engelleyici bir koleksiyonuna neden olur.

Ayrıca, hemen tam engelleyici çöp toplamayı zorlamadan önce özelliğini GCLargeObjectHeapCompactionMode.CompactOnce olarak ayarlayarak büyük nesne yığınını GCSettings.LargeObjectHeapCompactionMode sıkıştırabilirsiniz.
Optimized Atık toplayıcının nesneleri geri kazanmak için geçerli saatin en uygun olup olmadığını belirlemesini sağlar.

Çöp toplayıcı, bir koleksiyonun gerekçelendirilecek kadar üretken olmadığını belirleyebilir ve bu durumda nesneleri geri almadan geri döner.

Arka plan veya engelleme koleksiyonları

Oluşturulan koleksiyonun GC.Collect(Int32, GCCollectionMode, Boolean) engelleyip engellemediğini belirtmek için yöntem aşırı yüklemesini çağırabilirsiniz. Gerçekleştirilen koleksiyon türü, yöntemin mode ve blocking parametrelerinin bir bileşimine bağlıdır. mode , numaralandırmanın GCCollectionMode bir üyesidir ve blocking bir Boolean değerdir. Aşağıdaki tabloda ve blocking bağımsız değişkenlerinin mode etkileşimi özetlemektedir.

mode blocking = true blocking = false
Forced veya Default Engelleme koleksiyonu mümkün olan en kısa sürede gerçekleştirilir. Bir arka plan koleksiyonu devam ediyor ve oluşturma 0 veya 1 ise, Collect(Int32, GCCollectionMode, Boolean) yöntem hemen bir engelleme koleksiyonu tetikler ve koleksiyon tamamlandığında döndürür. Bir arka plan koleksiyonu devam ediyorsa ve generation parametresi 2 ise, yöntem arka plan koleksiyonu bitene kadar bekler, engelleyici bir 2. nesil koleksiyonu tetikler ve sonra döndürür. Bir koleksiyon mümkün olan en kısa sürede gerçekleştirilir. Collect(Int32, GCCollectionMode, Boolean) yöntemi bir arka plan koleksiyonu istemektedir, ancak bu garanti edilmemektedir; koşullara bağlı olarak, engelleme koleksiyonu yine de gerçekleştirilebilir. Bir arka plan koleksiyonu zaten devam ediyorsanız, yöntemi hemen döndürür.
Optimized Çöp toplayıcının durumuna ve parametresine bağlı olarak bir engelleme toplaması generation gerçekleştirilebilir. Çöp toplayıcı en iyi performansı sağlamaya çalışır. Çöp toplayıcının durumuna bağlı olarak bir toplama gerçekleştirilebilir. Collect(Int32, GCCollectionMode, Boolean) yöntemi bir arka plan koleksiyonu istemektedir, ancak bu garanti edilmemektedir; koşullara bağlı olarak, engelleme koleksiyonu yine de gerçekleştirilebilir. Çöp toplayıcı en iyi performansı sağlamaya çalışır. Bir arka plan koleksiyonu zaten devam ediyorsanız, yöntemi hemen döndürür.

Ayrıca bkz.