比較テストのために Assembly.LoadFrom() でロードされたアセンブリをアンロードする
Assembly.LoadFrom() を使用してアセンブリを動的にロードすると、時間コストがかかります。この時間をテストしたり、アセンブリを再ロードするときに比較したりすることもできます。これを実現するには、初期ロード後にアセンブリをアンロードする必要があります。これにより、アセンブリをアンロードする方法と、割り当てられたリソースをガベージ コレクションする方法について疑問が生じます。
アセンブリのアンロード
assem = null を設定するだけでは、アセンブリをアンロードするには十分ではありません。 AssemblyLoadContext クラスを使用して、アセンブリを管理し、明示的にアンロードできます。
AssemblyLoadContext loadContext = AssemblyLoadContext.GetLoadContext(assem); loadContext.Unload();
ガベージ コレクション
ガベージ コレクターは、アセンブリに割り当てられたメモリを自動的に再利用し、アンロードされた後のタイプ。ただし、ガベージ コレクションを明示的にトリガーする場合は、GC.Collect() メソッドを使用できます。
AppDomains を使用した代替方法
アセンブリをアンロードするための代替アプローチAppDomain を使用することです。各 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 中国語 Web サイトの他の関連記事を参照してください。