DLL のロード後に GetTypes() の実行に費やした時間を確認するには、以下の手順に従います。
ガベージ コレクター (GC) は、未使用のメモリを再利用する役割を果たします。 Assembly オブジェクトを null に設定すると、GC がトリガーされてオブジェクトがコレクションの対象としてマークされますが、メモリがすぐに解放されるとは限りません。
次のコードは、その方法を示しています。別の AppDomain にアセンブリをロードし、GetTypes() の時間を測定した後にアンロードします。
// Define the assembly path string pathToAssembly = @"C:\temp\myassembly.dll"; // Create a new AppDomain AppDomain dom = AppDomain.CreateDomain("some"); // Load the assembly in the new AppDomain AssemblyName assemblyName = new AssemblyName(); assemblyName.CodeBase = pathToAssembly; Assembly assembly = dom.Load(assemblyName); // Measure the time for GetTypes() Stopwatch sw = Stopwatch.StartNew(); Type[] types = assembly.GetTypes(); sw.Stop(); double time1 = sw.Elapsed.TotalMilliseconds; // Unload the AppDomain to release the assembly AppDomain.Unload(dom);
AppDomain では、ロードされたアセンブリに割り当てられたリソースが確実に解放され、後続のロードおよび GetTypes() 操作のより正確な時間測定が可能になります。
以上がAssembly.LoadFrom() でロードされたアセンブリを効率的にアンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。