Entladen von Assemblys, die mit Assembly.LoadFrom() geladen wurden
Um zu überprüfen, wie lange es dauert, GetTypes() nach dem Laden einer DLL auszuführen Bei Assembly.LoadFrom() muss möglicherweise die DLL entladen und neu geladen werden. Allerdings reicht es nicht aus, die Assembly-Referenz auf null zu setzen, um die Assembly zu entladen.
Assemblys explizit entladen
Um eine Assembly explizit zu entladen, können Sie AppDomain.Unload verwenden ()-Methode. Hier ist ein Beispiel:
// 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);
Durch das Entladen der AppDomain werden die Assembly und alle ihre Ressourcen vom Garbage Collector zurückgefordert.
Verwendung des Garbage Collectors
Während das Festlegen der Assembly-Referenz auf Null die Assembly nicht explizit entlädt, wird sie dadurch für die Garbage Collection geeignet. Der Garbage Collector wird schließlich die dem Assembly-Objekt zugewiesenen Ressourcen zurückfordern und die Assembly-Dateien werden aus dem Speicher entladen.
Es gibt jedoch keine Möglichkeit, den Garbage Collector explizit aufzurufen oder seine sofortige Ausführung zu erzwingen. Es handelt sich um einen Hintergrundprozess, der ausgeführt wird, wenn das System inaktiv ist. Daher wird empfohlen, AppDomain.Unload() zu verwenden, wenn Sie eine Assembly explizit entladen möchten.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Assembly.LoadFrom() geladene Baugruppen explizit entladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!