卸載使用Assembly.LoadFrom() 載入的程式集進行比較測試
使用Assembly.LoadFrom() 動態程式集會產生時間成本,您可能想要測試這次或在重新載入組件時進行比較。為此,您需要在初始載入後卸載程序集,這會引發有關如何卸載組件以及如何垃圾收集分配的資源的問題。
卸載程序集
單獨設定 assem = null 不足以卸載組件。您可以使用AssemblyLoadContext 類別來管理程序集並明確卸載它:
AssemblyLoadContext loadContext = AssemblyLoadContext.GetLoadContext(assem); loadContext.Unload();
垃圾收集
垃圾收集器將自動回收分配給程式集的記憶體,並卸載後其類型。但是,如果您想明確觸發垃圾回收,可以使用 GC.Collect() 方法。
使用 AppDomains 的替代方法
卸載程式集的替代方法就是使用AppDomains。每個AppDomain都是一個獨立的執行環境,可以獨立託管組件。您可以建立一個新的 AppDomain,將組件載入到其中,檢索類型,然後卸載 AppDomain 以釋放資源:
// Create a new AppDomain AppDomain dom = AppDomain.CreateDomain("SomeDomain"); // Load the assembly into the new AppDomain AssemblyName assemblyName = new AssemblyName(); assemblyName.CodeBase = pathToAssembly; Assembly assembly = dom.Load(assemblyName); // Get the types from the assembly Type[] types = assembly.GetTypes(); // Unload the AppDomain AppDomain.Unload(dom);
以上是如何有效率地卸載Assembly.LoadFrom()載入的組件進行效能測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!