Maison > développement back-end > C++ > Comment décharger efficacement les assemblys chargés avec Assembly.LoadFrom() ?

Comment décharger efficacement les assemblys chargés avec Assembly.LoadFrom() ?

Barbara Streisand
Libérer: 2025-01-06 02:16:40
original
839 Les gens l'ont consulté

How to Efficiently Unload Assemblies Loaded with Assembly.LoadFrom()?

Déchargement des assemblys chargés avec Assembly.LoadFrom()

Pour déterminer le temps passé à exécuter GetTypes() après le chargement d'une DLL, vous pouvez suivre les étapes mentionnées ci-dessous.

Déchargement des assemblages

  1. Libération Références : Définissez l'objet Assembly sur null pour libérer toute référence explicite à la DLL chargée. Cependant, cela ne garantit pas un déchargement immédiat.
  2. Décharger AppDomain : Créez un domaine d'application distinct (AppDomain) pour charger la DLL. Une fois la mesure du temps terminée, vous pouvez décharger l'AppDomain pour libérer les ressources associées à la DLL. Cela garantit un déchargement propre.

Garbage Collection

Le garbage collector (GC) est responsable de la récupération de la mémoire inutilisée. Bien que la définition de l'objet Assembly sur null déclenche le GC pour marquer l'objet pour une collection potentielle, il n'est pas garanti que la mémoire sera libérée immédiatement.

Exemple d'utilisation d'AppDomain

Le code suivant montre comment charger un assembly dans un AppDomain séparé et le décharger après avoir mesuré le temps de 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);
Copier après la connexion

En déchargeant le AppDomain, vous vous assurez que les ressources allouées à l'assembly chargé sont libérées, fournissant une mesure du temps plus précise pour les opérations de chargement et GetTypes() ultérieures.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal