Ich versuche, die Menge an Speicher zu reduzieren, die meine Anwendung verwendet. In meiner Anwendung verwende ich System.Reflection.Emit.EnumBuilder zum Erstellen von Enumerationen im laufenden Betrieb aus Informationen, die ich zur Laufzeit erhalte. Ich benutze den EnumBuilder nur, um eine individuelle Aufzählung zu erstellen, und danach habe ich keine weitere Verwendung dafür. Bei der Verwendung von CLRProfiler habe ich festgestellt, dass die EnumBuilder niemals zerstört werden. Meine Anwendung kann während der Ausführung Tausende von Aufzählungen erstellen, sodass sich die von diesen EnumBuildern verwendete Speichermenge summieren kann. EnumBuilder definiert keine Dispose-Methode, daher kann ich sie nicht auf diese Weise zerstören. Ist es möglich, übrig gebliebene EnumBuilder aus dem Speicher zu entfernen?Zerstören Sie den EnumBuilder nach dem Erstellen einer Enum?
1
A
Antwort
1
Ich habe das gleiche bemerkt. Es ist ein 'Leck' in ModuleBuilder, das an den Bytes und Strings IIRC hängt.
Sie können in WinDbg mit SOS geladen für bessere Speicherinformationen suchen.
4
EnumBuilder
erstellt die Aufzählung in einer dynamischen Assembly. Gemäß How to: Load and Unload Assemblies (C# -Programmierhandbuch) können Sie eine Assembly nicht entladen, ohne alle App-Domänen zu entladen, die sie verwenden. Insbesondere:
"Auch wenn die Assembly den Gültigkeitsbereich verlässt, bleibt die tatsächliche Assembly-Datei geladen, bis alle Anwendungsdomänen, die sie enthalten, entladen werden."
2
Meine Anwendung kann Tausende von Aufzählungen machen beim Laufen,
Warum? Es klingt, als ob du etwas tust, was du wahrscheinlich nicht tun solltest.
Verwandte Themen
- 1. Wie Jquery-Dialog nach dem Zerstören neu erstellen
- 2. Nach dem Zerstören wird keine Assoziationszerstörung aufgerufen?
- 3. Erstellen und zerstören Sie Objekte automatisch
- 4. Erstellen und zerstören Threads
- 5. handsontable zerstören und erstellen
- 6. So erstellen Sie globale Enum
- 7. Führen Sie den Übergang nach dem Abwickeln
- 8. Leeren Sie den Inhalt einer TextArea nach dem Senden
- 9. Großes Speicherleck in Highcharts - Erstellen und zerstören Sie fehlende Speicher?
- 10. Magento 1.5 So ändern Sie den Auftragsstatus nach dem Erstellen einer Rechnung programmatisch
- 11. Nach dem Erstellen, Rolle
- 12. Ändern Sie den Text nach dem Bildlauf
- 13. Sequelize: Ändern Sie den Spaltentyp in ENUM
- 14. dynamisch eine ENUM erstellen
- 15. Erstellen einer Dropdown-Liste mit enum?
- 16. Fehler beim Enum erstellen
- 17. Javascript Enum innerhalb einer Enum
- 18. dynamisch erstellen und zerstören Logging Appender
- 19. button_to: action => 'zerstören' sucht nach 'show'
- 20. So erhalten Sie den Enum-Wert für den Bericht
- 21. Jquery zerstören Dialogfeld nach x Sekunden
- 22. Erstellen Sie nach dem Erstellen einer neuen Instanz in der Sammlung keine GET-Anforderung auf dem Endpunkt (Backbone)
- 23. Python - Suchen und zerstören Sie doppelte Objekte in einer Liste
- 24. So erhalten Sie den Wertetyp in enum
- 25. Wie erkennen Sie den Unterschied zwischen einer Enum- und einer Bereichsumgebung mit libclang?
- 26. Speichern einer SQL-Datei nach dem Erstellen eines Controllers?
- 27. So erstellen Sie persistente Alarme auch nach dem Neustart
- 28. Tkinter zerstören Knopf durch eine Schleife erstellen
- 29. Erstellen einer neuen Zeile nach dem Speichern eines Datensatzes
- 30. Ändern Sie den Link nach dem Senden des Formulars (ASP)