Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Was liest InstanceSize aus?
[r2d2] - Mi 11.05.05 17:23
Titel: Was liest InstanceSize aus?
Hallo
InstanceSize gibt doch den Speicherbedarf eines Objekts in Bytes an.
Von einem kleinen Programm, das laut Windows Task-Manager 11mb Speicher benötigt, habe ich mir jetzt mit dieser Methode den Speicherbedarf der speicherintensivsten Objekte angeben lassen. Aufeinanderaddiert ergeben die Werte aber nur ca. 2kb.
warum? :shock:
delfiphan - Mi 11.05.05 17:48
a) Es kann sein, dass im Konstruktor (oder anderswo) noch Speicher alloziert wird (GetMem, etc.)
b) Der Pointer aufs Objekt musst du auch mitzählen (zusätzlich 4 Bytes)
c) Der Task-Manager zeigt nicht direkt an, wieviele Bytes von irgendwelchen Klassen benötigt werden.
[r2d2] - Mi 11.05.05 20:03
Zitat: |
c) Der Task-Manager zeigt nicht direkt an, wieviele Bytes von irgendwelchen Klassen benötigt werden. |
Das ist mir schon klar.
Punkt a) wird wohl die Hauptursache sein, denn mehrere MB bekommt man durch Pointer allein nicht so schnell zusammen.
UC-Chewie - Mi 11.05.05 21:15
InstanceSize zeigt dir einfach die Größe an, die ein Exemplar deines Objektes mit allen primitven und zusammengesetzten Typen belegt.
Primitive und zusammengesetzte Typen meinen hier Ganzzahlen, Fließkommazahlen, Zeiger, Mengen, Records und statische Arrays. Dynamisch allozierte Speicherstrukturen wie dynamische Records, Objekte und dynamishe Arrays werden hier nicht mitgezählt, sondern nur jeweils ein 4 Byte großer Zeiger.
Ein Objekt, das ein 1 MB großes Array dynamisch alloziert, ist dennoch nur 8 Byte (VMT + Zeiger auf das Array) groß.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!