비교 테스트를 위해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!