AGB  ·  Datenschutz  ·  Impressum  







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

Memory-Leak finden

Ein Thema von Codewalker · begonnen am 24. Jul 2009 · letzter Beitrag vom 25. Jul 2009
Antwort Antwort
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#1

Memory-Leak finden

  Alt 24. Jul 2009, 21:20
Ich habe in einem größeren Projekt über    ReportMemoryLeaksOnShutdown := True mir die Speicherlecks anzeigen lassen. Leider kriege ich ja nur den Datentyp und ungefähre Größen. Die Angabe hilft bei der Suche überhaupt nicht weiter (sind z.B. viele Strings dabei). Wie kann man das ganze denn weiter eingrenzen oder besser finden?
  Mit Zitat antworten Zitat
samso

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

Re: Memory-Leak finden

  Alt 25. Jul 2009, 09:44
Nach meiner Erfahrung hilft hier nur Versuch-und-Irrtum und ein selbstkritischer Blick in den Quellcode. Zunächst beseitige ich immer die Speicherlecks, die mit nicht freigebenen Objekten zusammenhängen, denn diese sind am leichtesten zu finden.
Bei solchen Fehlern sind die verdächtigen Kandidaten gerne mal Records mit enthaltenen Strings. Bei Records wird die Type-Information lediglich vom Compiler verwaltet. Sie stehen zur Laufzeit also nicht mehr zu Verfügung. Das ist auch der Grund weshalb FastMM keine weiteren Type-Informationen zu Verfügung stellen kann. Wenn man diese Records dynamisch erstellt und der Zeiger dann fröhlich im Programm durch die Gegend wandert, dann geht dem Compiler schon mal die Type-Information verloren und er weiss dann nicht mehr, daß er auch noch Strings freigeben muss (siehe: Finalize). Man sollte also versuchen, die Programmteile in denen solche Records erstellt werden, einfach mal wegzulassen. Man kann auch mal schaun, ob man mal eine unterschiedlich Anzahl von Records erstellen lassen kann - wie entwickelt sich das Speicherleck dann?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

Re: Memory-Leak finden

  Alt 25. Jul 2009, 09:55
Das sind so Units und Projekte, welche du dir eventuell mal ansehn könntes.
[delphi]\source\Win32\rtl\sys\getmem.inc (hier ist aber schon alles aktiviert)
[delphi]\source\dUnit\src\FastMMMemLeakMonitor.pas
[delphi]\source\dUnit\tests\FastMMMonitorTest.pas
[delphi]\source\dUnit\examples\MemLeakDetect\LeakTestDemo. dpr

Ansonsten mußt du dir einfach mal das "große"/aktuelle FastMM besorgen ... dort gibt es dann auch wesentlich mehr Möglichkeiten.
$2B or not $2B
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

Re: Memory-Leak finden

  Alt 25. Jul 2009, 12:14
Hast du das Entwickler Magazin?

Entwickler Magazin (Ausgabe: 05.08/13.08.2008)
Artikel: Speicher managen mit FastMM

Dort ist das etwas Erklärt.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 11:47 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