Problem bei mhr als 1GB Speicherbedarf?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Problem bei mhr als 1GB Speicherbedarf?

Beitrag von RSE »

Hallo!

Ich schreibe momentan an einem Pascal-Programm (keine Application), welches große Mengen Speicher frisst. Plattform ist Win32, Lazarus Version siehe Signatur. Problem: Das Programm läuft mit einer kleineren Datenmenge einwandfrei, bis ich es auf die große Datenmenge loslasse, da gibt es dann plötzlich bei einem Speicherbedarf von etwa 1GB (laut TaskManager) einen "RunError(203)". Die gesamten Daten sind in einem dynamischen Array gespeichert, jedes einzelne Datum ist eine Klasse von 32Byte Instance Size (TNode, siehe unten) zuzüglich ein paar Strings (TTag) bisher noch nicht in Gesamtheit bestimmter Größe. Klicke ich nach dem Fehler wieder auf Run, kommt ein Fehler "EOutOfMemory". Nach nochmaligem klicken auf Run, gibt mein Programm im finally-Block aus, dass 19316724 Einträge im Array sind (entspricht 618135168 Byte plus den Strings, könnte insgesamt durchaus 1GB ergeben). Momentan läuft das Programm ohne die Strings, dann kann man die Gesamtgröße genau bestimmen.

Gibt es eine Beschränkung auf 1GB, die hier greift?

Code: Alles auswählen

TTag = record
    Key: String;
    Value: String;
  end;
 
  TWay = class;
 
  TNode = class
  public
    ID: LongWord;
    Lat: Double;
    Lon: Double;
    Ways: array of TWay;  // bleibt momentan noch leer
    Tags: array of TTag;
  end;
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Problem bei mhr als 1GB Speicherbedarf?

Beitrag von MacWomble »

Meines Erachtens wäre es sinnvoller, bei solchen Datenmengen eine Datenbank zu verwenden.
Was machst du denn mit solch riesigen Arrays? Wo kommen diese her?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Problem bei mhr als 1GB Speicherbedarf?

Beitrag von RSE »

Hm, das Problem scheint woanders zu liegen... gleiche Symptomatik bei Speicherung ohne Strings, bei etwa gleicher Anzahl an Einträgen, Speicherbedarf << 1GB.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Problem bei mhr als 1GB Speicherbedarf?

Beitrag von RSE »

Es lag an nicht initialisierten Variablen. :shock: Das muss mir beim Umbau der Speicherstruktur in ein array unterlaufen sein... :oops:
Also: Problem gelöst :mrgreen:
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

Antworten