AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ClientDataset Memoryleak

Ein Thema von Koloss · begonnen am 30. Mär 2016 · letzter Beitrag vom 31. Mär 2016
Antwort Antwort
Seite 2 von 2     12   
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
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#12

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 14:43
MIt dieser Schleife das selbe Problem:
Code:
  cdsTestStarted.Last;
  while not cdsTestStarted.BOF do
    cdsTestStarted.Delete;
War wahrscheinlich eh klar.

Irgendwann sollte der MemoryManager von Delphi das trotzdem zurückmelden oder?
  Mit Zitat antworten Zitat
Koloss

Registriert seit: 21. Jul 2010
74 Beiträge
 
Delphi 2 Desktop
 
#13

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 14:47
Gebe es eigentlich ein alternative zum Clientdataset? Natürlich mit den gleichen komfort?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 15:48
Gebe es eigentlich ein alternative zum Clientdataset? Natürlich mit den gleichen komfort?
Kommt drauf an, was du genau brauchst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#15

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 16:16
Schau mal, ob da was dabei ist: http://torry.net/pages.php?id=572

Nutze seit Jahren, wenn ich 'ne "Datenbank" ohne SQL, die nur im Arbeitsspeicher existiert, brauche, die KbmMemTable. Ist leistungsfähig, schnell, die Daten können auch in unterschiedlichen Formaten auf die Platte geschrieben und von dort wieder geladen werden.

Sortieren per Index ist möglich, ebenso Filtern, Locate, FindFirst, FindNext...

Benötigt für große Datenmengen natürlich entsprechend Speicher, mir ist allerdings bisher nicht aufgefallen, dass der Speicherbedarf bei der Nutzung irgendwie zunimmt.

Ist 'n Nachkomme von TDataSet und kann daher mit allen datenbanksensitiven Komponenten genutzt werden.
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#16

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 16:40
Das ist jetzt nicht unbedingt ein Memoryleak im eigentlichen Sinne. Der Taskmanager weiß nämlich nichts über den intern vom Delphi Speichermanager verfügbaren Speicher. Kommt denn bei aktiviertem ReportMemoryLeaksOnShutdown := true; eine entsprechende Meldung?
Das wird mit FastMM4 Memory Leak reporting wird wohl nicht funktionieren.
Sind die ClientDataSets denn nicht in C oder C++ geschrieben und werden über *.dll bzw *.OBJ eingebunden?
Die haben dann ihren eignen Memory Manager und der Delphi MM kann da nix sehen.
  Mit Zitat antworten Zitat
ventiseis

Registriert seit: 15. Jan 2009
Ort: 94032 Passau
53 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#17

AW: ClientDataset Memoryleak

  Alt 31. Mär 2016, 20:41
Sind die ClientDataSets denn nicht in C oder C++ geschrieben und werden über *.dll bzw *.OBJ eingebunden? Die haben dann ihren eignen Memory Manager und der Delphi MM kann da nix sehen.
Das könnte auch die sporadisch auftretenden Speicherleaks bei ApplyUpdates im TSimpleDateset erklären, das ja z.T. auch aus einem Clientdataset besteht. Spannender aber wäre die Frage, warum die "Unknown Bytes" erst unter Seattle angezeigt werden und nicht bereits unter XE3.
Bastian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz