> 백엔드 개발 > C++ > Assembly.LoadFrom()을 사용하여 로드된 어셈블리를 명시적으로 언로드하려면 어떻게 해야 합니까?

Assembly.LoadFrom()을 사용하여 로드된 어셈블리를 명시적으로 언로드하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2025-01-04 09:41:35
원래의
399명이 탐색했습니다.

How Can I Explicitly Unload Assemblies Loaded with Assembly.LoadFrom()?

Assembly.LoadFrom()으로 로드된 어셈블리 언로드

DLL 로드 후 GetTypes()를 실행하는 데 걸리는 시간을 확인하려면 Assembly.LoadFrom()을 사용하면 DLL을 언로드하고 다시 로드해야 할 수도 있습니다. 그러나 어셈블리 참조를 null로 설정하는 것만으로는 어셈블리를 언로드하기에 충분하지 않습니다.

명시적으로 어셈블리 언로드

어셈블리를 명시적으로 언로드하려면 AppDomain.Unload를 사용할 수 있습니다. () 방법. 예는 다음과 같습니다.

// Create a separate AppDomain to load the assembly
AppDomain dom = AppDomain.CreateDomain("some");

// Load the assembly into the new AppDomain
Assembly assembly = dom.LoadFrom(filePath);

// Get the types from the assembly
Type[] types = assembly.GetTypes();

// Unload the AppDomain, which will unload the assembly
AppDomain.Unload(dom);
로그인 후 복사

AppDomain을 언로드하면 어셈블리와 해당 리소스가 모두 가비지 수집기에 의해 회수됩니다.

가비지 수집기 사용

어셈블리 참조를 null로 설정해도 어셈블리가 명시적으로 언로드되지는 않지만 가비지 대상이 됩니다. 수집. 가비지 수집기는 결국 Assembly 개체에 할당된 리소스를 회수하고 어셈블리 파일은 메모리에서 언로드됩니다.

그러나 가비지 수집기를 명시적으로 호출하거나 강제로 즉시 실행하도록 할 수 있는 방법은 없습니다. 시스템에 유휴 시간이 있을 때 실행되는 백그라운드 프로세스입니다. 따라서 어셈블리를 명시적으로 언로드하려면 AppDomain.Unload()를 사용하는 것이 좋습니다.

위 내용은 Assembly.LoadFrom()을 사용하여 로드된 어셈블리를 명시적으로 언로드하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿