Programmatisch den vom Objekt verwendeten Speicher finden

8

Gibt es eine Möglichkeit, die Speichermenge, die von einem Objekt in c # verwendet wird, programmatisch und genau zu bestimmen? Mir geht es nicht darum, wie langsam der Prozess ist, also ist das Laufen von GCs links und rechts akzeptabel (natürlich würde ich etwas effizienteres bevorzugen).

  • Serialisieren von Objekten und Betrachten der resultierenden Länge scheint nicht sehr genau zu sein (in einem einfachen Test dieser Methode sah ich, dass eine Ganzzahl einen Wert von 54 zurückgegeben hat).

  • Die Verwendung von GC.GetTotalMemory(true) scheint inkonsistente Werte zu erzeugen, ganz zu schweigen davon, dass sie zu groß erscheinen.

  • Die Verwendung von Marshal.SizeOf(object) liefert genaue Ergebnisse, scheint aber nur mit Primitiven zu funktionieren.

Wenn nichts in diesen Zeilen verfügbar ist, wäre es eine Alternative, die Größen basierend auf den verwendeten Strukturen und den beteiligten Primitiven zu berechnen. Dies wäre auch akzeptabel (wenn auch ärgerlich), aber ich müsste die richtige Methode zur Berechnung der Objektkosten usw. kennen. Jede Literatur, die mir einen Weg zeigen würde, wäre großartig.

Ähnliche SO-Fragen (von denen keine konkrete Methoden zur genauen Berechnung der Objektgröße zu haben schien):

Wie viel Speicher verwendet ein C # /. NET-Objekt?

Wie Speicher verfügbar oder in C # verwendet wird

Wie erhalten Sie die Objektgröße im Speicher?

>

sizeof () entspricht den Referenztypen?

Werkzeuge zum Profilieren von Speicher (nicht programmatischer Ansatz):

Ссылка

Finden Sie heraus, wie viel Speicher wird von einem Objekt in C # verwendet?

    
JesseBuesking 24.09.2012, 04:40
quelle

2 Antworten

1

Eine andere Idee besteht darin, eine Helferklasse zu haben, die das Objekt widerspiegelt und alle seine Datenelemente extrahiert und alle Felder sizeof () zusammenstellt. Das wird ein wenig kompliziert, aber es ist implementierbar

diese Klasse wird die tatsächliche Größe eines Objekts berechnen, aber ich habe es nur ein paar Mal getestet und ein paar Objekte wurden getestet, aber ich denke, ich werde arbeiten.

%Vor%     
H-Bahrami 24.09.2012 05:21
quelle
0
%Vor%

Ich weiß nicht, ob es für Sie nützlich ist oder nicht ... aber versuchen Sie, diesen Link zu verweisen ... espacialy fig.4

Ссылка

    
Freelancer 24.09.2012 04:53
quelle

Tags und Links