AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie erkenne ich eigentlich ein Memory-Leak?

Wie erkenne ich eigentlich ein Memory-Leak?

Ein Thema von pelzig · begonnen am 8. Feb 2015 · letzter Beitrag vom 9. Feb 2015
Antwort Antwort
pelzig
(Gast)

n/a Beiträge
 
#1

Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 8. Feb 2015, 22:40
Der Titel sollte eigentlich schon alles sagen

Ich schau' im Task-Manager VORHER nach, wieviel RAM frei ist

- starte mein Programm, lasse es laufen und beende es wieder

und schaue im Task-Manger NACHHER wieder nach, wieviel RAM frei ist.

Wenn NACHHER=VORHER dann kein Leak?

Die Frage ist wirklich ernst gemeint!

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 8. Feb 2015, 22:50
Mit der Methode wirste nix finden. Denn ein Memory leak überlebt auf nem Windows mit NT Kernel nicht mehr die Dauer eines Processes (das war mal zu 95 oder 98 Zeiten so als nen fehlerhaftes Programm mal ebend deine komplette Windows Session zerhauen hat - aber jeder Boot tat gut)

Heutzutage lebt es also nur solange, wie dein Programm auch läuft. Ist aber schlimm genug, wenn du entweder nach einigen Stunden irgendwann in deinem 32bit Programm an die Speichergrenze kommst und es dir mit Fehlern weghagelt oder dein System nichts mehr für die anderen Prozesse übrig hat.

In neuen Delphi Versionen kannst du relativ einfach mit einem beherzten ReportMemoryLeaksOnShutdown := True; beim beenden einen Report bekommen, ob irgendwas im Verlauf deiner Anwendung nicht korrekt freigegeben wurde.

Für erweiterte Diagnose empfiehlt sich, die FastMM4 im full debug mode laufen zu lassen - siehe dazu z.B. diesen Artikel (und in den Kommentaren dort gibts auch noch den Link zu ner Coderage Session dazu)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#3

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 8. Feb 2015, 23:35
Etwas neueres als die Delphi 7 Personal Edition will ich mir (finanziell und hobbybedingt) nicht antun.

Meine Programme erstellen i.A. nur das Hauptforumlar automatisch, der Rest wird bei Bedarf erzeugt.

Falls ich Dich richtig verstanden habe, ist beim Beenden des Programms inzwischen NACHHER immergleich VORHER?

Aber falls ich während meines Programmlaufs ein paarmal dynamisch (immer wieder) das gleiche Formular erzeuge und zerstöre, dabei im Task-Manager der RAM-Verbrauch aber nicht wieder auf den RAM-Startwert meines Programmes zurückgeht, habe ich ein Memory-Leak?

Hab' ich das richtig verstanden?

Danke @Stevie!

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 8. Feb 2015, 23:45
Etwas neueres als die Delphi 7 Personal Edition will ich mir (finanziell und hobbybedingt) nicht antun.
Ok, aber FastMM nutzen geht trotzdem und ist nur zu empfehlen, auch wenn nur Hobby.

Falls ich Dich richtig verstanden habe, ist beim Beenden des Programms inzwischen NACHHER immergleich VORHER?
Nunja, aufn RAM Verbrauch im Taskmanager achten ist so ne Sache und gibt nur grobe Anhaltspunkte - aber ja, dein Programm, wenn beendet kann dem Betriebssystem kein Speicher geklaut haben, denn Windows kümmert sich drum, dass es seine Resourcen zurückbekommt.

Aber falls ich während meines Programmlaufs ein paarmal dynamisch (immer wieder) das gleiche Formular erzeuge und zerstöre, dabei im Task-Manager der RAM-Verbrauch aber nicht wieder auf den RAM-Startwert meines Programmes zurückgeht, habe ich ein Memory-Leak?
Gegenfrage, welcher Wert denn? Da gibt's nämlich mehrere. Ich verweis da mal auf eine ganz gute Erklärung.

Unterm Strich kann ich nur sagen, pack die FastMM in deine Anwendung und schau dir an, obs rummeckert. Alles andere wäre so als ob du mit nem abrollenden Seil und ner Sanduhr messen willst wie schnell du fährst
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie ( 8. Feb 2015 um 23:48 Uhr)
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#5

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 9. Feb 2015, 00:04
Also statt "Seilrolle und Sanduhr" irgendwie versuchen, ein älteres FastMM (auftreiben und als "GPS") einzubinden?

OK, probier' ich mal.

Vielen Dank!

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.042 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Wie erkenne ich eigentlich ein Memory-Leak?

  Alt 9. Feb 2015, 00:40
älteres FastMM (auftreiben und als "GPS") einzubinden?
Die aktuellste Version sollte eigentlich auch für Delphi 7 noch funktionieren.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:50 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 by Thomas Breitkreuz