Frage

Ich versuche, zur Laufzeit festzustellen, wie viel Speicher eine bestimmte Klasse in .NET verwendet.Benutzen Marshal.SizeOf() ist out, da es nur für Werttypen funktioniert.Gibt es eine Möglichkeit, genau zu überprüfen, wie viel Speicher eine Klasse verbraucht?

War es hilfreich?

Lösung

Ich habe erst vor Kurzem damit begonnen, mich mit solchen Dingen zu befassen, aber ich habe herausgefunden, dass Speicherprofiler sehr detaillierte Informationen zu Instanzen von Objekten in Ihrer Anwendung liefern können.

Hier sind ein paar, die einen Versuch wert sind:

Andere Tipps

Ich stimme zu, dass ein Speicherprofiler der einfachste Weg ist, an die gesuchten Informationen zu gelangen.Zusätzlich zu den beiden zuvor genannten empfehle ich JetBrains dotTrace, das sowohl ein Leistungsprofiler als auch ein Speicherprofiler ist.

Wenn Sie es selbst tun möchten und bereit sind, tief in die Eingeweide der CLR einzudringen, können Sie die verwenden .NET-Profiling-API, eine nicht verwaltete API, die (wie Microsoft sagt):"Ermöglicht es einem Profiler, die Ausführung eines Programms durch die gemeinsame Sprachlaufzeit (CLR) zu überwachen." Es ist nicht gerade für den ungezwungenen Gebrauch gedacht, aber es hat eine enorme Menge an Funktionalität.

Verlinken Sie einfach auf die verwandte SO-Frage:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top