AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MemoryLeak in Nexus?

MemoryLeak in Nexus?

Ein Thema von haentschman · begonnen am 16. Feb 2017 · letzter Beitrag vom 17. Feb 2017
Antwort Antwort
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#1

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 08:57
Hallo,

ist das Beispiel vollständig? Ich frag nur, weil du den Constructor der TnxQuery aufrufst, aber freigeben tust du ein TDataSet.

BTW ich verwende die NexusDB schon seit Version 1.14 aber Probleme mit MemoryLeaks hatte ich noch nicht. Thorsten macht hier wirklich einen sehr guten Job
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#2

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:18
Moin...
Zitat:
weil du den Constructor der TnxQuery aufrufst, aber freigeben tust du ein TDataSet.
...TnxQuery stammt von der Hierachie des TDataSet ab. Siehe auch Screenshot: Data.DB ... TDataSet.Open Der Pointer auf die Instanz ist die gleiche. Also ist das Freigeben auch so richtig...

Nachtrag:
Ich denke hier veräppelt mich der MadExcept. Ein Beenden mit ReportMemoryLeaksOnShutdown := True bringt kein Leak bis auf den UnicodeString den ich testweise eingefügt habe.
Angehängte Grafiken
Dateityp: png Leak1.png (31,9 KB, 9x aufgerufen)

Geändert von haentschman (17. Feb 2017 um 09:54 Uhr)
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:32
Sehe ich ganz anders. Du erzeugst eine Instanz der TnxQuery, deren Teilmenge von der Objekthierarchie ein TDataSet ist. Das ist richtig, darum funktioniert das auch. Aber bei der Freigabe wird lediglich der Destructor des TDataSet aufgerufen, und NICHT der Destructor der TnxQuery. Das muss leaken, was sonst. Die Speicheradresse ist die selbe, aber...deine Frage war ja "Habe ich was übersehen?".
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Benutzerbild von FaTaLGuiLLoTiNe
FaTaLGuiLLoTiNe

Registriert seit: 3. Jul 2004
Ort: NRW
55 Beiträge
 
Delphi XE Enterprise
 
#4

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:38
Das dürfte eigentlich kein Problem sein, da der Destruktor immer virtuell ist.
Christian
<< FaTaLGuiLLoTiNe >>
Rhinoceroses don't play games!
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#5

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:43
Aber bei der Freigabe wird lediglich der Destructor des TDataSet aufgerufen, und NICHT der Destructor der TnxQuery.
Das kann ich aber nur glauben, wenn bei dem Destructor von TnxQuery das override vergessen worden wäre. Ansonsten sorgt die Vererbung für den korrekten Aufruf des richtigen Destructors.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#6

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:45
Danke an Alle...
Zitat:
Das dürfte eigentlich kein Problem sein, da der Destruktor immer virtuell ist.
Zitat:
Ansonsten sorgt die Vererbung für den korrekten Aufruf des richtigen Destructors.
...sehe ich auch so.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#7

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 09:46
https://www.nexusdb.com/Support/index.php?q=id_1871.htm

Wenn das virtuelle Destroy (override) richtig aufräumt sollte es doch OK sein.

Rollo
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

AW: MemoryLeak in Nexus?

  Alt 17. Feb 2017, 10:13
Wenn das virtuelle Destroy (override) richtig aufräumt sollte es doch OK sein.
Ein Breakpoint im Debugger würde das eindeutig klären. Die Sourcen sind bei Nexus ja mit dabei.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:24 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