Einzelnen Beitrag anzeigen

Jens01

Registriert seit: 14. Apr 2009
631 Beiträge
 
#1

Objektliste sprengt RAM (32-bit)

  Alt 12. Jul 2016, 16:14
Hallo...
ich habe Probleme mit einer TObjectlist, in der ich Ergebniswerte mit Selektoren abspeichere. In der Liste können schon mal mehrere zehntausend Werte auflaufen. Ab einer bestimmten Menge gibt es ein "Out of Memory"-Fehler und das Programm stürzt ab.
Was für mich aber unverständlich ist, wenn ich dieselben Daten in ein Stream packe und auf der Festplatte abspeichere, sind da nur wenige Kilobyte zu finden. Wieso bläht sich das so im RAM auf?
Gibt es Möglichkeiten, das zu reduzieren?

Meine prinzipielle Programmstruktur:
Delphi-Quellcode:
  TWert = class
  private
    FWert : Double;
    FSelektor1: Integer;
    FSelektor2: string;
  public
    constructor Create(AWert: Double; ASelektor1: Integer; ASelektor2: string);
    property Wert: Double read FWert write FWert;
    property Selektor1: Integer read FSelektor1 write FSelektor1;
    property Selektor2: string read FSelektor2 write FSelektor2;
  end;

  TWerteliste = class(TObjectList<TWert>)
  private
  public
    procedure Add(AWert: Double; ASelektor1: Integer; ASelektor2: string);
    function FindWert(ASelektor1: Integer; ASelektor2: string): Double;
  end;
P.S.:
Um Fragen vorzubeugen: Ich nutze keine Datenbank, weil für mein Projekt schon die schnelleren Memorydatenbanken zu langsam sind.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat