AGB  ·  Datenschutz  ·  Impressum  







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

unexpected Memory leak finden

Ein Thema von Bjoerk · begonnen am 25. Aug 2014 · letzter Beitrag vom 25. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2      
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

unexpected Memory leak finden

  Alt 25. Aug 2014, 15:23
Zitat:
An unexpected Memory leak has occurred.
The unexpected small black leaks are:
381-412 bytes: Unknown x 2
Wie findet man denn das?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 15:26
Gute Frage. Bisher war meine Taktik: "Durch Glück oder gar nicht".

Ich schaue halt mal mögliche Stellen durch die mir in den Kopf kommen und kommentiere ggf. mal ein paar Stellen aus und damit kann man die Quelle mit etwas Arbeit schon ein bisschen einschränken.
Wenn man dann an der Stelle ist sieht man dann oft/manchmal woran es wahrscheinlich liegt.

Wenn du ReportMemoryLeaks während der Entwicklung immer/oft an hast weißt du ja schon seit wann das Problem auftaucht und welche Stellen sich seitdem eigentlich nur geändert haben.

Vllt. auch mal überlegen ob und ggf. wo du manuell Speicherplatz reservierst mit GetMem z.B.
Ich hatte diese Memoryleaks z.B. schonmal bei GetPropList der RTTI. da bekommt man einen Pointer auf eine Property-Liste zurück den man (wie ich dann rausgefunden habe) später auch wieder freigeben muss mit Dispose/FreeMem.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (25. Aug 2014 um 15:32 Uhr)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 15:48
ich krieg die Meldung sogar so ??
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutDown := true; halt;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 15:53
Ich würde das ReportMemoryLeaksOnShutDown := true in die DPR reinschreiben.
Dann öffne das Hauptformular und schließ es direkt wieder. Wenn der Fehler kommt dann kommentier mal solange Sachen aus dem constructor/FormCreate/FormShow/... aus bis das MemoryLeak weg ist.

Ggf mal ein Testprojekt machen falls du Fremdkomponenten benutzt und dort die Komponenten nacheinander durchprobieren. Vllt. liegt es ja gar nicht an deinem Code.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 15:59
Hat FastMM4 nicht viel detailliertere Möglichkeiten, Speicherlecks zu finden?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 16:25
ich krieg die Meldung sogar so ??
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  ReportMemoryLeaksOnShutDown := true; halt;
Du schießt die Anwendung ab und wunderst dich über Speicherlecks?

Man kann sich vom FastMM den Inhalt der Speicherblöcke (zumindestens den Anfang) ausgeben lassen. Eventuell erkennt man da etwas

Und man kann sich vom FastMM auch ein detailiertes Log erstellen lassen (vorallem mit dem Richtigen und nicht der abgespeckten Variante im Delphi),
wo dann auch ein Stacktrace drin ist, von dem, welcher den Block beantrag hatte.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 16:29
Hab ich gemacht. Same. Ich geh jetzt mal alle initialization finalization durch. Könnte aber auch sein daß zwei inherited Destroy irgendwo fehlen? Ich nehm jetzt erst mal die Fremdkomponenten raus. Oh mann ..
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 16:34
Es gibt auch Komponenten, welche "absichtlich" Speicherlecks zurücklassen.
Drum gibt es auch die RegisterMemoryLeak-Funktionen, um bekannte "Speicherlecks" von der Prüfung auszuschließen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 17:11
Die Indy-Komponenten z.B.
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: unexpected Memory leak finden

  Alt 25. Aug 2014, 17:32
Zwei Produktlisten die wie vermutet in initialization / finalization erzeugt / freigeben werden. Von TList abgeleitet, Clear überschrieben und inherited Clear vergessen. Meine Recordlisten bringen mich noch um den Verstand. Manchmal macht‘s echt keinen Spaß mehr..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:06 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