Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Toplanabilir derlemeler , oluşturuldukları uygulama etki alanı kaldırılmadan kaldırılabilen dinamik derlemelerdir. Bir toplanabilir derleme tarafından kullanılan tüm yönetilen ve yönetilmeyen bellek ve içerdiği türler geri kazanılabilir. Derleme adı gibi bilgiler iç tablolardan kaldırılır.
Dinamik bir derleme oluştururken boşaltmayı etkinleştirmek için AssemblyBuilderAccess.RunAndCollect bayrağını kullanın. Derleme geçicidir (yani kaydedilemez) ve Toplanabilir derlemelerde kısıtlamalar bölümünde açıklanan sınırlamalara tabidir. Ortak dil çalışma zamanı (CLR), derlemeyle ilişkili tüm nesneleri serbest bıraktığınızda otomatik olarak bir toplanabilir derlemeyi kaldırır. Diğer tüm açılardan, toplanabilir derlemeler oluşturulur ve diğer dinamik derlemelerle aynı şekilde kullanılır.
Toplanabilir derlemelerin ömrü
Bir toplanabilir derlemenin ömrü, içerdiği türlere ve bu türlerden oluşturulan nesnelere yapılan başvuruların varlığıyla denetlenir. Aşağıdakilerden biri veya daha fazlası mevcut olduğu sürece ortak dil çalışma zamanı derlemeyi kaldırmaz (T derlemede tanımlanan herhangi bir türdür):
örneği
T.dizisinin bir
Törneği.Genel bir türün, tür bağımsız değişkenlerinden biri olarak
Tbulunduran bir örneği. Bu, koleksiyon boş olsa bileTiçeren genel koleksiyonları içerir.Type veya TypeBuilder örneği,
T'yi temsil eden bir öğe.Önemli
Derlemenin bölümlerini temsil eden tüm nesneleri serbest bırakmanız gerekir. ModuleBuilder öğesini tanımlayan
Tbir referans TypeBuilder öğesine sahiptir ve AssemblyBuilder nesnesi bir referans ModuleBuilder öğesine sahiptir; bu nedenle bu nesnelere yapılan referanslar serbest bırakılmalıdır. Bir LocalBuilder veya ILGenerator yapımında kullanılanTvarlığı bile boşaltmayı önler.Dinamik olarak tanımlanmış başka bir tür
Ttarafından yapılan ve kod yürütüldüğünde hala erişilebilen, statik bir başvuruT1. Örneğin,T1türündenTtüretilebilir veyaTyöntemindekiT1bir parametrenin türü olabilir.A
ByRef' ya ait statik bir alana.TRuntimeTypeHandle, RuntimeFieldHandle, veya RuntimeMethodHandle'nin
TveyaTbileşenine başvurduğu bir durumda.Type nesnesini temsil eden nesneye erişmek için dolaylı veya doğrudan kullanılabilecek herhangi bir yansıma nesnesinin
Törneği. Örneğin, Type nesnesiTtüründe öğesi olan bir dizi türünden veya tür bağımsız değişkeniTolan genel bir türdenTelde edilebilir.Herhangi bir iş parçacığının çağrılar yığınındaki yöntemlerden biri
M; buradaM, derlemede tanımlanan ya da modül düzeyinde yer alan bir yöntemT'dir.Derlemenin bir modülünde tanımlanan statik yöntemin temsilcisi.
Derlemede yalnızca bir tür veya bir yöntem için bu listeden yalnızca bir öğe varsa, çalışma zamanı derlemeyi kaldıramaz.
Uyarı
Sonlandırıcılar listedeki tüm öğeler için çalıştırılana kadar çalışma zamanı derlemeyi kaldırmaz.
Yaşam süresini izleme amacıyla, toplanabilir bir derlemenin oluşturulmasında C#'da List<int> veya Visual Basic'te List(Of Integer) gibi oluşturulmuş ve kullanılan genel bir türün, ya genel tür tanımını içeren derlemede ya da tür bağımsız değişkenlerinden birinin tanımını içeren bir derlemede tanımlandığı kabul edilir. Kullanılan tam derleme bir uygulama ayrıntısıdır ve değiştirilebilir.
Toplanabilir koleksiyon ürünleri üzerindeki kısıtlamalar
Aşağıdaki kısıtlamalar, toplanabilir derlemeler için geçerlidir:
Statik başvurular
Sıradan bir dinamik derlemedeki türler, toplanabilir bir derlemede tanımlanan türlere statik başvurulara sahip olamaz. Örneğin, toplanabilir bir derlemedeki bir türden devralan sıradan bir tür tanımlarsanız, bir NotSupportedException özel durumu fırlatılır. Bir toplanabilir derlemedeki bir tür, başka bir toplanabilir derlemedeki bir türe statik referanslar içerebilir; ancak bu, referans verilen derlemenin ömrünü, referans veren derlemenin ömrüne kadar uzatır.
.NET Framework'teki toplanabilir derlemeler için aşağıdaki kısıtlamalar geçerlidir:
COM İletişimi
Toplanabilir bir derleme içinde COM arabirimleri tanımlanamaz ve bir koleksiyon derlemesi içindeki tür örnekleri COM nesnelerine dönüştürülemez. Bir koleksiyon derlemesindeki bir tür, COM çağrılabilir sarmalayıcı (CCW) veya çalışma zamanı çağrılabilir sarmalayıcı (RCW) olarak işlev göremez. Ancak, toplanabilir derlemelerdeki türler COM arabirimleri uygulayan nesneleri kullanabilir.
Platform çağırma
Özniteliğine DllImportAttribute sahip yöntemler, toplanabilir bir derlemede tanımlandığında derlenmez. Yönerge OpCodes.Calli , toplanabilir bir derlemedeki bir türün uygulanmasında kullanılamaz ve bu tür türler yönetilmeyen koda göre düzenlenemez. Ancak, toplanamaz bir derlemede bildirilen bir giriş noktası kullanarak yerel koda çağrı yapabilirsiniz.
Düzenleme
Toplanabilir derlemelerde tanımlanan nesneler (özellikle, temsilciler) sıraya alınamaz. Bu, tüm geçici yayılan türler için bir kısıtlamadır.
Bütünleştirme yükleme
Yansıma yayma, toplanabilir derlemelerin yüklenmesi için desteklenen tek mekanizmadır. Başka bir derleme yükleme biçimi kullanılarak yüklenen derlemeler kaldırılamaz.
Bağlama bağlı nesneler
Bağlam statik değişkenleri desteklenmez. Bir toplanabilir derlemedeki türler genişletemez ContextBoundObject. Ancak, toplanabilir derlemelerdeki kod başka bir yerde tanımlanan bağlama bağlı nesneleri kullanabilir.
İş parçacığına özgü statik veriler
İş parçacığı statik değişkenleri desteklenmez.
.NET Framework ve .NET 9 öncesi .NET sürümlerindeki toplanabilir derlemeler için aşağıdaki kısıtlamalar geçerlidir:
ile statik alanlar
FixedAddressValueTypeAttributeToplanabilir derlemelerde tanımlanan statik alanlara FixedAddressValueTypeAttribute özniteliği uygulanamaz.