Evet, kod çöp toplanabilir. T'yi İfade Üzerine Derleme çağırdığınızda, kod DynamicMethod'a derlenir ve bunlar çöp toplama için uygundur.
Nitekim
o MSDN üzerinde gösterilen değil, ama 4,0 gemileri .net Ne İfade olduğu DLR, içinde <T> .Compile uygulanması bir göz olabilir:
http://dlr.codeplex.com/SourceControl/changeset/view/54115#990638
rağmen derleyicinin uygulanması .net 3.5'de farklıydı, DynamicMethods hala kullanıldı (kaynak: kendim, Mono'da System.Linq.Expressions'ı uyguladık).
Derlenmiş ifade ağaçlarının toplanamadığı durum, Expression<T>CompileToMethod kullandığınız ve RunAndCollect bayrağıyla oluşturulmamış bir AssemblyBuilder'dan bir MethodBuilder ilettiğinizdir.
DynamicMethod yeterince kullanıyor mu? Eric tarafından sağlanan bağlantıya göre, http://msdn.microsoft.com/en-us/library/dd554932.aspx, meclisin özel bir bayrakla oluşturulması gerekiyor. Reflektörde, DynamicMethod.GetDynamicMethodsModule() yönteminin RunAndCollect ile ancak yalnızca Run ile bir derleme oluşturmadığını görebiliyorum. – Alex
Evet, bir DynamicMethod yeterlidir ve bu MSDN'de belirtilmiştir. DynamicMethods CLR'de özel işlemlere sahiptir ve gerçekten de tahsil edilebilir. –
Evet, şimdi DynamicMethod sınıfının belgelerinde görebiliyorum. Teşekkürler :) – Alex