Aracılığıyla paylaş


Tetiklenen 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, GC.Collect yöntemini kullanarak çöp toplama işlemini zorlayabilirsiniz.

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. Uygulamanızın çöp toplayıcıyı çok sık tetiklemediğinden emin olun, çünkü çöp toplayıcı nesneleri en uygun olmayan zamanlarda geri almaya çalışırken performansı düşürebilir. Üretken olacağı durumlardaki toplama işlemleri için, ilerleyen bölümde tartışıldığı gibi, GCCollectionMode.Optimized yöntemine bir Collect numaralandırma değeri 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 toplamanın hemen olmasını zorlar. Bu, GC.Collect() aşırı yüklemeyi çağırmaya eşdeğerdir. Tüm nesillerin tam engelleyici bir koleksiyonuna neden olur.

Ayrıca, tam engelleyici bir çöp toplama işlemini zorlamadan önce, özelliği GCSettings.LargeObjectHeapCompactionMode olarak ayarlayarak büyük nesne yığınını GCLargeObjectHeapCompactionMode.CompactOnce 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 tablo, mode ve blocking bağımsız değişkenlerinin etkileşimini özetlemektedir.

mode blocking = true blocking = false
Forced veya Default Bloke etme 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 toplama 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. Eğer bir arka plan koleksiyonu zaten devam ediyorsa, yöntem hemen döner.
Optimized Çöp toplayıcının durumuna ve generation parametresine bağlı olarak bir engelleyici koleksiyon 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. Eğer bir arka plan koleksiyonu zaten devam ediyorsa, yöntem hemen döner.

Ayrıca bakınız