Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#8

AW: Kann ich herausfinden wie groß eine Memory-Datenbank ist?

  Alt 27. Jul 2016, 10:12
Nein, kann ClientDataSet auch nicht vollständig.

Man kann (RecordSize * RecordCount) + (TBlobField().Size jedes einzelnen BlobFeldes) rechnen,
bzw. TField.DataSize + (if is TBlobField then add TBlobField().Size) jedes einzelnen Feldes.

Und dazu kommt dann noch jeweils der Offset der Speicherverwaltung.
siehe getmem.inc > SmallBlockTypes ... Standardmäßig: jeder kleine Speicherblock bis 2608 Bytes wird auf jene Größen aufgerundet,
Mittelgroße Blöcke bis 258KB werden auf 256 Bytes aufgerundet und große Blöcke auf 64KB (Verwaltungsgröße vom Windows)

Natürlich wäre es schöner, wenn Embarcadero eine virtuelle Property/Methode im TDataSet einführt, für "Speicherverbrauch", welches dann auch von FireDAC und Sonstigem entsprechend implementiert würde.
Oder zumindestens wenn die Memory-DataSets sowas hätten. (oder ganz geil gleich direkt in TObjekt, so daß man sowas standardisiert jeder Komponente fragen könnte ... bei TPersistent könnte man eventuell serialisieren und dessen Größe nehmen, aber das muß nicht mit dem RAM-Verbrauch übereinstimmen, wie z.B. gespeichert als ANSI/UTF-8 und im RAM als Unicode)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Jul 2016 um 10:16 Uhr)
  Mit Zitat antworten Zitat