AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie ermittelt man die Größe eines Objekts im Speicher?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie ermittelt man die Größe eines Objekts im Speicher?

Ein Thema von TonyMontana · begonnen am 17. Jan 2008 · letzter Beitrag vom 6. Sep 2008
 
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#11

Re: Wie ermittelt man die Größe eines Objekts im Speicher?

  Alt 18. Jan 2008, 00:43
Zitat von TonyMontana:
Ist ja alles schön und gut und warscheinlich auch richtig, dennoch möchte ich ja nicht die Größe der Klasse sondern des Objekts. Und zwar aus dem Grund, weil ich das ganze Objekt dann mal speichern und irgendwann wiederladen möchte!
Geht das jetzt irgednwie oder verstehe ich irgendwas nicht? :wiejetzt:
Problem1: es gibt garkein kompaktes Objekt im Speicher, alles was verpointert ist, steht woanders, wo eben das Speichermanagment eine Platz gefunden hat.

Problem2: eine Instanz belegt zwar eine bestimmte Menge Speicher, aber das ist nicht alles, der Speicher für die Klasse kommt ja noch dazu. Bei 3 Objekten wird also 1 x Klasse und 3 x Instanz belegt. Wahrscheinlich willst du ja nur den Inhalt von Feldern abspeichern und nicht die Methoden, aber auch da gibt es Variablen der Klasse und der Instanz.

Problem3: ein Pointer kann ja wiederum auf ein Objekt zeigen, also stellt sich das Problem rekursiv von neuem. Für eigene Klassen könntest du ja immer eine Funktion schreiben, die rekursiv den Speicherbedarf einschliesslich der "Unterobjekte" bestimmt, aber es sind ja auch Objekte enthalten die nicht von dir sind. Brauchbar wäre eine solche Funktion nur, wenn alle Objekte sie hätten, m.a.W. wenn sie für TObject und alle abgeleiteten Klassen definiert wäre. Prinzipiell wäre das möglich, ist aber eben nicht so.

Problem4: wenn Problem3 gelöst wäre, hätte man die Menge Speicher, die ein einzelnes Objekt belegt, korrekt bestimmt, aber schon bei 2 Objekten muss das nicht mehr stimmen - es können ja mehrere Pointer auf das selbe Objekt zeigen. Ich glaube nicht, dass dieses Problem ohne eine komplette Speicherbelegungs-Analyse lösbar wäre.

Problem5: InstanceSize schliesst nur den Bedarf für die Pointer ein, also sozusagen den Speicherbedarf vor den nachgeordneten Creates, damit kann man nichts anfangen ausser dem einen Zweck, für den es vorgesehen ist.

Gruss Reinhard
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz