2008-09-09 13 views
8

Ich versuche einen Weg zu finden, um zur Laufzeit festzustellen, wie viel Speicher eine bestimmte Klasse in .NET verwendet. Die Verwendung von Marshal.SizeOf() ist nicht möglich, da es nur für Werttypen funktioniert. Gibt es eine Möglichkeit, genau zu überprüfen, wie viel Speicher eine Klasse verwendet?Bestimmen Sie, wie viel Speicher eine Klasse verwendet?

Antwort

5

Ich habe erst vor kurzem begonnen, diese Art von Sache zu untersuchen, aber ich habe festgestellt, dass Speicher-Profiler ziemlich detaillierte Informationen über Instanzen von Objekten in Ihrer Anwendung geben können.

Hier sind ein paar, die einen Versuch wert sind:

1

Ich bin damit einverstanden, dass ein Speicher-Profiler der einfachste Weg ist es, die Informationen, die Sie suchen zu erhalten. Zusätzlich zu den beiden zuvor genannten, empfehle ich JetBrains dotTrace, die beide ein Leistungsprofiler und ein Speicherprofiler ist.

Wenn Sie es selbst tun möchten und bereit sind, tief in die Eingeweide der CLR zu kommen, können Sie die .NET Profiling API verwenden, die eine nicht verwaltete API ist, die (wie Microsoft sagt): "die Überwachung eines Profilers ermöglicht die Ausführung eines Programms durch die Common Language Runtime (CLR). " Es ist nicht für den gelegentlichen Gebrauch bestimmt, aber es hat eine enorme Menge Funktionalität.

Verwandte Themen