Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#16

AW: FireDAC Query Speicher freigeben

  Alt 11. Jul 2018, 10:57
Wir entfernen die FireDAC-Indizes denn das scheint dafür zu sorgen dass FireDAC sich alles ins RAM schaufeln will (wofür auch immer)
Natürlich muss FireDAC alle Datensätze (also die von der Query gelieferten) im Speicher haben, damit sie lokal sortiert werden können. Wie sollte das auch sonst gehen. Das entspricht quasi einem FetchAll. Übrigens kann auch ein Aufruf von RecordCount unter bestimmten Umständen dieses auslösen.

Das erklärt aber nicht, warum eine Query, die einen einzigen Datensatz zurückliefert, über 1 GB Speicher benötigt.

Daher mein Vorschlag, die Query isoliert außerhalb des Programms bzw. in einem Testprogramm auszuführen. Entweder braucht sie dort auch diesen Speicher, dann muss man sehen, welche Felder das verursachen. Ist der Speicherverbrauch der Query selbst aber deutlich geringer, liegt das Problem innerhalb des Programms und man kann dann sukzessiv die übrige Funktionalität einbinden, bis der Auslöser für den enormen Speicherverbrauch gefunden ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat