Maison >développement back-end >C++ >Comment puis-je décharger efficacement les assemblys chargés avec Assembly.LoadFrom() pour les tests de performances ?
Déchargement des assemblages chargés avec Assembly.LoadFrom() pour les tests de comparaison
Le chargement dynamique des assemblages à l'aide de Assembly.LoadFrom() entraîne un coût en temps, et vous voudrez peut-être tester cette fois ou la comparer lors du rechargement de l'assemblage. Pour y parvenir, vous devez décharger l'assembly après le chargement initial, ce qui soulève des questions sur la façon de décharger les assemblys et sur la manière de récupérer les ressources allouées.
Déchargement des assemblys
Le réglage assem = null seul n'est pas suffisant pour décharger un assembly. Vous pouvez utiliser la classe AssemblyLoadContext pour gérer l'assembly et le décharger explicitement :
AssemblyLoadContext loadContext = AssemblyLoadContext.GetLoadContext(assem); loadContext.Unload();
Garbage Collection
Le garbage collector récupérera automatiquement la mémoire allouée à l'assembly et ses types une fois déchargé. Cependant, si vous souhaitez déclencher explicitement le garbage collection, vous pouvez utiliser la méthode GC.Collect().
Méthode alternative utilisant AppDomains
Une approche alternative pour décharger les assemblys est d'utiliser AppDomains. Chaque AppDomain est un environnement d'exécution distinct qui peut héberger des assemblys de manière indépendante. Vous pouvez créer un nouvel AppDomain, y charger l'assembly, récupérer les types, puis décharger l'AppDomain pour libérer les ressources :
// 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);
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!