2013-04-05 17 views
5

Anladığım kadarıyla, .NET'in tüm sürümleri için 0, 1 ve 2 olmak üzere üç nesil çöp toplama var., GC.MaxGeneration Hiç 2 değil mi?

GC.MaxGeneration incelemesinin 2'den başka bir şey kazandıracağı durumlar var mı? Farklı sayıda GC nesillere sahip diğer çerçevelerde GC'ler var mı?

+4

Test etmedim, ancak eski Compact Framework, jenerasyonel olmayan bir GC kullanmış ve bu durumda "MaxGeneration" 0'a geri dönecek şekilde belgelendi, bu yüzden de CF'de mi? –

cevap

8

O GC.MaxGeneration uygulamanın ömrü boyunca sabit olmak olduğunu belirtmek gerekir bir uygulama ayrıntı başlı başına : uygulayıcılar bu uygulaması için

, MaxGeneration özelliği tarafından döndürülen değeri

Notlar Uygulamanın bir uygulama ömrü boyunca sabit kalması garanti edilir. (Çöp toplayıcı tarafından kullanılan kuşaklara sayısına bağlı olarak

Bu sadece MaxGeneration .NET çerçevenin diğer uygulamalarda 2 farklı olabilir anlamına gelir, ama aynı zamanda program uygulaması sırasında değişebilir mülkiyet getter denir zamanı.

Diğer uygulamalar, koşullara bağlı olarak farklı çöp toplayıcılarını da kullanabilir. Örneğin, Mono, Boehm non-generational GC (MaxGeneration her zaman 0 olacaktır) veya SGen generational GC (yalnızca iki nesneyi uygular, bu nedenle MaxGeneration her zaman 1'dan daha az veya buna eşit olacaktır) kullanabilir.

+0

Anlamıyorum. Bir uygulama uygulamasının ömrü boyunca sabit kalmayı garanti ettiğini belirtiyor. _.a, ancak program yürütme sırasında değişebileceğini söylediniz .._. –

+4

@John, çünkü bu uygulama için * diyor. Diğer bir deyişle, "MaxGeneration" sabiti sabit kaldığında sadece Microsoft'un .NET çerçevesinin uygulanması için geçerlidir. –

+0

SSCLI'da, geri dönmek için kodlanmış 2, bu yüzden yürütme sırasında değişeceğinden şüpheleniyorum. – Pete