AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADOquery nimmt viel RAM-Speicher weg, hilfe!!!!!!!!!!
Thema durchsuchen
Ansicht
Themen-Optionen

ADOquery nimmt viel RAM-Speicher weg, hilfe!!!!!!!!!!

Ein Thema von khalilazzz · begonnen am 4. Apr 2005 · letzter Beitrag vom 28. Feb 2007
 
berens

Registriert seit: 3. Sep 2004
441 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: ADOquery nimmt viel RAM-Speicher weg, hilfe!!!!!!!!!!

  Alt 28. Feb 2007, 09:05
*bump*

Also ich stehe im Moment vor genau dem gleichen Problem; leider hat hier bisher noch keiner eine Lösung gepostet.

trifid: PrimaryKey ist vorhanden. MDAC sind die neuesten. BDS2006.

Das TAdoQuery wird zur Laufzeit erzeugt und auch ordnungsgemäß wieder freigegeben.
Database_CreateQuery ist eine Prozedur, die mir ein TAdoQuery erzeugt, Prepared auf True setzt und Datenbank zuweist etc.
LogToFile speichert mir den Parameter in eine Datei + den kompletten, im System verfügbaren Arbeitsspeicher.
Man beachte, dass ich hier wirklich nur -zu Testzwecken- q.Open und dannach direkt q.Close aufrufe. Die Daten aus der Datenbank werden also nicht in irgendwelchen Arrays etc. gespeichert!

Delphi-Quellcode:
  if assigned(Database) then begin
    q := NIL;
    LogToFile('TThumblist.Reload.Database_CreateQuery');
    Database_CreateQuery(q, Database);
    try
      LogToFile('TThumblist.Reload.q.SQL.Add');
// q.SQL.Add('SELECT * FROM T_Storage_Thumbs ORDER BY strDescription');
      q.SQL.Add('SELECT TOP 10 * FROM T_Storage_Thumbs ORDER BY strDescription');
// q.SQL.Add('SELECT TOP 1 * FROM T_Termin');

      LogToFile('TThumblist.Reload.q.SQL.Open');
      q.Open;
      LogToFile('TThumblist.Reload.q.Close');
      q.Close;
      LogToFile('TThumblist.Reload.Ende');
    finally
      FreeAndNil(q);
      LogToFile('TThumblist.Reload.Free');
    end;
Ergebnisdatei des Logs:
Zitat:
09:58: TThumblist.Reload.Start [Ram: 502.275]
09:58: TThumblist.Reload.Database_CreateQuery [Ram: 502.275]
09:58: TThumblist.Reload.q.SQL.Add [Ram: 502.275]
09:58: TThumblist.Reload.q.SQL.Open [Ram: 502.284] // <-- nach dem Ausführen von Open fehlen hier 27 MB
09:58: TThumblist.Reload.q.SQL.First [Ram: 475.561]
09:58: TThumblist.Reload.q.Close [Ram: 475.561]
09:58: TThumblist.Reload.Ende [Ram: 489.940]
09:58: TThumblist.Reload.Free [Ram: 489.940] // <-- es fehlen immernoch knapp 12 MB
Das Interessante:
Das Problem scheint nur aufzutreten, sobald eine Tabelle mit Blob-Feldern verwendet wird. Die Fehler werden wohl alle geladen und nicht wieder entladen, denn wenn ich SELECT TOP x * FROM T_Storage_Thumbs ausführe, ist der "fehlende" Arbeitsspeicher immer ein vielfaches größer als x.

Bin für Tips sehr dankbar...

Siehe auch: http://coding.derkeiler.com/Archive/...3-11/0560.html
Auch das in der Borland QC Berichtete Problem mit angeblichem Fix bringt keine Lösung http://qc.borland.com/wc/qcmain.aspx?d=3635 (man muss angemeldet sein, um die Datei von QC herunterladen zu können)
  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 01:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz