AGB  ·  Datenschutz  ·  Impressum  







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

Unexpected Memory Leak

Offene Frage von "dominikkv"
Ein Thema von dominikkv · begonnen am 10. Jul 2007 · letzter Beitrag vom 12. Jul 2007
Antwort Antwort
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#1

Unexpected Memory Leak

  Alt 10. Jul 2007, 19:36
Hi

bin nun seit einiger Zeit an einem Projekt.
Heute hab ich gesehen das man mit
ReportMemoryLeaksOnShutdown := True; bei Programmende seine Leaks angezeigt bekommt.
Naja...hier mal meine kleine Liste^^
Zitat:
---------------------------
Unexpected Memory Leak
---------------------------
An unexpected memory leak has occurred. The unexpected small block leaks are:



1 - 12 bytes: TIdThreadSafeInteger x 1, String x 50

13 - 20 bytes: TList x 5, TIdHTTPProtocol x 1, TIdStackWindows x 1, String x 28, Unknown x 6

21 - 28 bytes: TCriticalSection x 1, TIdProxyConnectionInfo x 1, TIdReplyRFC x 2, TIdCriticalSection x 3, TBrush x 1, TPen x 1, String x 19

29 - 36 bytes: TFont x 1, TIdCookies x 1, TIdBuffer x 2, TOcilloScope x 1, String x 48, Unknown x 5

37 - 44 bytes: String x 7

45 - 52 bytes: TMultiReadExclusiveWriteSynchronizer x 1, TIdURI x 1, String x 7

53 - 60 bytes: TIdCookieList x 2, TIdSocketHandle x 1, TStringList x 4, TBitmap x 5, String x 6

61 - 68 bytes: TIdCookieRFC2109 x 2, TThreadLocalCounter x 1, TIdHeaderList x 6, String x 24, Unknown x 1

69 - 76 bytes: TIdCookieManager x 1, String x 2

77 - 84 bytes: String x 4

85 - 92 bytes: String x 3

93 - 100 bytes: TBitmapCanvas x 1, String x 2

101 - 108 bytes: String x 3, Unknown x 1

109 - 116 bytes: TBitmapImage x 5, String x 3

133 - 140 bytes: TShoutcastQuery x 1

149 - 156 bytes: TIdHTTPResponse x 1

173 - 188 bytes: TIdHTTPRequest x 1

253 - 268 bytes: TIdSocketListWindows x 1, TIdIOHandlerStack x 1

317 - 348 bytes: String x 1

349 - 380 bytes: TIdHTTP x 1

381 - 412 bytes: String x 2

477 - 524 bytes: Unknown x 7

733 - 796 bytes: String x 1

1261 - 1372 bytes: Unknown x 1



The sizes of unexpected leaked medium and large blocks are: 61740


---------------------------
OK
---------------------------
So, was kann ich dagegen machen, oder wie finde ich am besten meine Leaks und wie behebe ich diese?

Bin für jeden Tipp dankbar^^

mfg.Dominik
Dominik
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Unexpected Memory Leak

  Alt 10. Jul 2007, 19:46
Hmmmmm,

also wenn du memcheck benutzt,
zeigt dir das auch die Stellen im Quellcode an.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Unexpected Memory Leak

  Alt 10. Jul 2007, 21:13
Zitat von hoika:
also wenn du memcheck benutzt,
zeigt dir das auch die Stellen im Quellcode an.
Mach FastMM/Delphi 2006/2007 auch. Beide benötigen jedoch mehr Debug-Infos in der Exe (TD32-Debug-Infos). Ohne diese haben sie keine Infos über Quellzeilen und Aufrufstack.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Unexpected Memory Leak

  Alt 10. Jul 2007, 21:53
Fang von unten an (also im der Textdatei). Die ersten paar Leaks sind/waren (bei D6) in der VCL, aber dann fangen deine Korken an.

Mach es so:
1. Starten / Beenden. Etwaige Memoryleaks erkennen, ausmerzen
2. Starten 1.Button klicken, Beenden (Rest siehe oben)

usw. weiter durcharbeiten usw usw usw.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Unexpected Memory Leak

  Alt 11. Jul 2007, 11:46
Die ganzen TIdxxx kommen von irgendeiner INDY-Kompo, wenn Du diese freigibst sollte die Liste schon besser aussehen.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: Unexpected Memory Leak

  Alt 11. Jul 2007, 12:06
Zitat von Dunkel:
Die ganzen TIdxxx kommen von irgendeiner INDY-Kompo, wenn Du diese freigibst sollte die Liste schon besser aussehen.
Hi, stimmt so nicht ganz, die Indy-Komponenten haben das (wohl bekannte?) Problem, dass die Units nicht sauber alles frei räumen, was alloziert wird. Der DGL-Luke hat mir mal gesagt, dass das wohl bekannt sei und die Begründung läge seitens der Indy-Entwickler darin, dass die keine gute Stelle gefunden hätten um sicher aufräumen zu können. Ein Teil der Leaks dürfte also bleiben, solange nur die Indy-Units im Programm auftauchen.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Unexpected Memory Leak

  Alt 11. Jul 2007, 12:31
OK, da hast Du recht. TIdThradSafeInteger x1 & TIdCriticalSection x2 werden (zu mindest bei mir mit INDY 10) auch beim Freigeben der INDY-Komponente nicht freigegeben. (klick mich)
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Unexpected Memory Leak

  Alt 12. Jul 2007, 13:36
wow... danke für eure antworten
ich hab jetzt mal memcheck in mein projekt eingebunden (in uses-klausel und dann MemChk; als ersten Befehl).
Außerdem hab ich mit Debug-DCUs, keine optimierung, mit Stack-Frames und mit TD32-Debug-Infos compiliert.
Nach dem Start kommt folgende Meldung:
Zitat:
---------------------------
Benachrichtigung über Debugger-Problem
---------------------------
In Projekt C:\Users\Dominik\Documents\Borland Studio-Projekte\MusikManager\SoFi\SoFi.exe trat ein Problem mit folgender Meldung auf: 'access violation at 0x7732f31a: write of address 0x00080f70'. Prozess angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK
---------------------------
und nach einem klick auf OK bleibt er bei dieser Zeile hängen:
Zitat:
7732F31A 53 push ebx
Dominik
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:50 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