對於性能優化,我使用以下代碼動態地創建每個用戶請求新類型:如何卸載使用RunAndCollect創建的動態程序集?
var dynamicAssemblyName = new AssemblyName(assemblyName);
AssemblyBuilder dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly(dynamicAssemblyName, AssemblyBuilderAccess.RunAndCollect);
ModuleBuilder moduleBuilder = dynamicAssembly.DefineDynamicModule(assemblyName);
然後,我使用moduleBuilder
發射類型。
這會爲每個請求創建一個新的動態裝配。所以我可能會在應用程序的整個生命週期中遇到很多這樣的問題。所以,我擔心資源將被釋放。因此,我使用AssemblyBuilderAccess.RunAndCollect來實現這一點。 msdn說:
動態程序集可以被卸載並回收它的內存,但要遵守在用於動態類型生成的回收程序集中描述的限制。
我只是沒有發現如何卸載動力總成,不幸的是鏈接到珍藏大會動態類型生成的主題是壞了。
一個不再維護的version of that page似乎表明,一旦發射的類型超出範圍,卸載自動發生。我可以相信嗎?