Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 11:56
Ob ich eben
cds.First
while not cds.EOF
cds.Delete

oder eben

cds.EmptyDataset

schreibe, sollte bei Logchanges = False, das selbe sein.
Nein, ganz und gar nicht. Bei EmptyDataSet kann das ClientDataSet ganz andere Mechanismen verwenden, als beim Löschen einzelner Sätze (noch dazu von vorne an). Bei jedem Delete werden allenfalls kleine Blöcke freigegeben, während ein EmptyDataSet den gesamten reservierten Puffer auf einmal freigeben kann. Was genau passiert, ist leider tief in den Midas-Sourcen verborgen.

Es ist auch nicht so, daß der vom Taskmanager als verwendet angegebene Speicher nicht doch als freier Speicher vom Memory-Manager verwaltet wird. Erst wenn dieser den Speicher wieder an das Betriebssystem zurückgibt, kann der Taskmanager dieses auch anzeigen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat