Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 9 Speicherleck oder falsches Handling? (https://www.delphipraxis.net/126847-indy-9-speicherleck-oder-falsches-handling.html)

wisher 3. Jan 2009 14:36


Indy 9 Speicherleck oder falsches Handling?
 
Hallo,

wie im Titel schon erwähnt, habe ich ein Memory-Leak Problem in einer Anwendung
und ich bin mir nicht sicher, ob es and den Indy's oder an mir liegt.

Folgendes tue ich in meiner Anwendung:

Mich mit einem Host connecten...
Delphi-Quellcode:
 
         TCPClient.Host := MeinHost;
         TCPClient.Port := MeinPort;
         TCPClient.Connect(10);
...dieser Schickt dann auf den Port beliebig lange XML Strings
und ich lese diesen String mit CurrentReadBuffer aus
Delphi-Quellcode:
        XMLStr := TCPClient.CurrentReadBuffer;
Im Taskmanager ist ganz klar zu sehen, dass der Speicher der Anwendung stetig anwächst.
Ich habe bislang zwar noch kein Profiler-Tool eingesetzt, bin mir aber sehr sicher, dass
das Problem im TCPClient zu suchen ist, bzw. im Umgang damit.

Wie ist das mit dem Indy-Buffer? Ich hätte gedacht, der wird ständig "neu" und nicht einfach "weiter"
beschrieben.

Kennt sich Jemand aus? Für Hilfe wäre ich sehr dankbar.


Grüße
Sascha

omata 3. Jan 2009 14:43

Re: Indy 9 Speicherleck oder falsches Handling?
 
Verwende doch mal FastMM, dann kannst du auch aussagekräftigere Hinweise liefern.

wisher 3. Jan 2009 14:49

Re: Indy 9 Speicherleck oder falsches Handling?
 
Ich habe befürchtet, dass diese Antwort kommt. ^^
Werde ich tun, aber ich bin mir sicher, dass es an der IdTCPClient-Buffer-Verabeitung liegt.
Ich weiß eben nicht, ob ich's so richtig mache.

omata 3. Jan 2009 14:54

Re: Indy 9 Speicherleck oder falsches Handling?
 
FastMM herunterladen und das FastMM-Archiv entpacken (in einen Ordner),
diesen dann in das Programmverzeichnis kopieren und die enthaltenen Pas-Dateien deinem Projekt hinzufügen. Danach must du noch die Reihenfolge der Units in der Uses-Klausel in der Projektdatei ändern (Die beiden FastMM-Dateien müssen als erstes aufgeführt werden).

Was ist da jetzt so schlimm dran?

wisher 4. Jan 2009 01:40

Re: Indy 9 Speicherleck oder falsches Handling?
 
Hi,

wie vermutet, FastMM findet quasi nichts. Das heißt, vier Memleaks sind schon vorhanden,
aber das ist nicht das Problem. Hier gibt es ein paar Objekte die nicht mehr freigegeben
werden, aber das ist im Byte -Bereich. Beim eigentlichen Problem geht um einige MB's.

Ich tippe dann mal auf das Handling mit der IdTCPClient -Komponente. Irgendwas mache ich
noch nicht richtig.

Gruß
Sascha

wisher 4. Jan 2009 01:42

Re: Indy 9 Speicherleck oder falsches Handling?
 
Ps.: Was soll eigentlich im FullDebugMode bei FastMM passieren?
Ich habe das aktiviert, DLL ist auch da, mein Programm startet auch, aber nach Beenden hängt's.


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