Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   FastMM benutzen (https://www.delphipraxis.net/141456-fastmm-benutzen.html)

oki 9. Okt 2009 10:43


FastMM benutzen
 
Hallo Leute!

Manchmal hat man es wirklich schwer. Die Aufgabe ist eigentlich ganz einfach. Ich will FastMM nutzen um meine Anwendung auf Speicherlecks zu prüfen. Ich hab FastMM4 als erste Unit in meinen Projektquellcode aufgenommen, die FastMM_FullDebugMode.dll in mein Programmverzeichnis kopiert und meine Anwendung erfolgreich kompiliert. Zusätzlich hab ich folgende Zeile eingefügt:
Delphi-Quellcode:
begin
  Application.Initialize;
  ReportMemoryLeaksOnShutdown := True;
  ...
Ich starte das Programm im Debugger, führe es aus, beende es, ... alles super.

Aber wo finde ich jetzt meine Informationen die mir FastMM zu eventuellen Speicherlecks findet? :pale:

Ich hatte vor längerer Zeit schon mal FastMM benutzt und kann mich duster daran erinnern ein Fenster mit einer Anzeige gehabt zu haben. Der entsprechende Speicher mit den Infos scheint aber aus meinem Gehirn gelöscht zu sein :mrgreen:

Schon mal Dank und Gruß

oki

DeddyH 9. Okt 2009 10:45

Re: FastMM benutzen
 
Wenn Speicherlecks vorhanden sind, wird Dir das zum Programmende per MessageBox mitgeteilt. Überprüfen kannst Du das ganz einfach, indem Du z.B. ein Objekt erzeugst und das nicht wieder freigibst.

oki 9. Okt 2009 10:50

Re: FastMM benutzen
 
Hallo DeddyH,

schon mal Dank für die Antwort. Ich denke, dass ich definitiv ein Leck in meiner Anwendung habe. Ich benutze WMI, und nach jedem Abfragedurchlauf (Button-Click) werden 20k mehr Speicher verbraucht. Eigentlich sollte das imho nicht passieren. Aber ich werde deinen Vorschlag mal aufgreifen und einfach eine Objektleiche zurücklassen um zu prüfen, was FastMM bei mir dann macht.

Gruß oki

Bernhard Geyer 9. Okt 2009 10:53

Re: FastMM benutzen
 
WMI verwendet COM-Interfaces. Und dort ist der Delphi-Memorymanager und damit FastMM außen vor.
Entweder du verwendest die Schnittstelle falsch (irgendwelche .Quit/.Exit-Aufrufe fehlen) oder das Interface hat eine Speicherlücke. Ab unzu (bei IE wirkt das) einfach mal ein _Release auf ein COM-Interface probieren ob man damit die Speicherlücke weg bekommt. Ist zwar bei Delphi nicht nötig, aber wenn der Interface-Lieferant murks baut ...

oki 9. Okt 2009 10:56

Re: FastMM benutzen
 
Ich hab das grad mal getestet. Ein nicht frei gegebenes Objekt wird erkannt und es ist so, wie Bernhard es sagt. ich such mal alles zu meinem verwendeten WMI-Dingsdas raus und mach zu meinem Speicherproblem einen neuen Thread auf.

Besten Dank euch beiden,

Gruß oki

oki 9. Okt 2009 11:34

Re: FastMM benutzen
 
Mein Speicherproblem hat sich mittlerweile von selbst gelöst. Ich hatte die WMI.pas von himitzu hier WMI-Thread benutzt. Den Download aber vor seinem letzten Beitrag vorgenommen. Naja, da braich ich jetzt nicht mehr suchen und mit FastMM ist auch wieder alles grün bei mir.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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