AGB  ·  Datenschutz  ·  Impressum  







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

Memoryleak woher?

Ein Thema von sko1 · begonnen am 11. Jul 2017 · letzter Beitrag vom 11. Jul 2017
Antwort Antwort
Seite 1 von 2  1 2      
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Memoryleak woher?

  Alt 11. Jul 2017, 09:41
Delphi-Version: 5
Hallo,

ich habe bei Programmende ein kleines Memoryleak:

21 - 28 bytes : TMBSEncoding x 1

Wo zum Teufel kommt das her?

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#2

AW: Memoryleak woher?

  Alt 11. Jul 2017, 09:44
Wo zum Teufel kommt das her?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#3

AW: Memoryleak woher?

  Alt 11. Jul 2017, 09:54
Installiere dir FastMM und binde den in Dein Programm ein. Dann gehe in den Debug-Mode und schaue Dir das Log-File an, da findest Du die meisten Informationen.

Mehr kann man dir mit deiner genauen Angabe, was Du so alles gemacht hast in Deinem Programm auch nicht helfen...

......

P.S.: Mein Programm stürzt immer mal wieder ab, warum? <- Ist in etwa genau so einfach und sicher zu beantworten...
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
DevLinus

Registriert seit: 25. Apr 2017
26 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Memoryleak woher?

  Alt 11. Jul 2017, 10:21
Madexcept ist ziemlich wirkungsvoll um Memmory Leaks zu finden.
  Mit Zitat antworten Zitat
Glados
(Gast)

n/a Beiträge
 
#5

AW: Memoryleak woher?

  Alt 11. Jul 2017, 10:23
Wurde TMBSEncoding von dir selber angelegt? Falls ja, gibst du es auch wieder frei?
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Memoryleak woher?

  Alt 11. Jul 2017, 11:07


Ich vermute mal, du meinst TMBCSEncoding. Wird irgendwo TEncoding.GetEncoding aufgerufen? Das TEncoding, was dort zurück kommt, muss auch wieder freigegeben werden.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

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

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: Memoryleak woher?

  Alt 11. Jul 2017, 12:08
Die einzige Programmstelle, wo überhaupt ein Encoding vorkommt, wäre diese:

Delphi-Quellcode:
function CreateDocumentXML: boolean;
var
  Xml: IXMLDOCUMENT;
...
begin
  try
    Xml := NewXMLDocument;
    Xml.Encoding := 'utf-8';
    Xml.Options := [doNodeAutoIndent]; // looks better in Editor ;)
    ArchivNode := Xml.AddChild('archive');
.....

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

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

AW: Memoryleak woher?

  Alt 11. Jul 2017, 12:41
Hilfe zur Selbsthilfe:

- FastMM4 herunterladen (die mit Delphi ausgelieferte ist etwas abgespeckt, was das genaue Lokalisieren des Leaks angeht):
- FastMM als erste unit in der Projekt dpr Einbinden
- irgendwo ReportMemoryLeaksOnShutDown := True rein schreiben
- FullDebugMode den Defines hinzufügen (Projektoptions -> Delphi Compiler -> Conditional defines) - hierbei auf die richtige Config oben in der Combobox achten.
- sicherstellen, dass in der entsprechenden Config Debug Informationen generiert und in der binary vorhanden sind (unter Linking entweder der Haken bei Debug Information) oder eine map Datei erzeugt wird - beides sollte in der standard Debug Config der Fall sein
- die FastMM_FullDebugMode.dll aus dem FastMM4 Repository unter "FullDebugMode DLL/Precompiled" in das Ausgabeverzeichnis deines Projekts (also neben die exe) kopieren (alternativ, irgendwo, wo Windows sie per PATH findet)
- Programm aus der IDE heraus mit Debugging(!) starten

Nach dem Beenden und Bestätigen des Dialogs mit dem Leak, sollte neben deiner exe eine txt Datei liegen, wo jeder Leak inklusive des Callstacks, der dazu führte aufgelistet ist.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (11. Jul 2017 um 12:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#9

AW: Memoryleak woher?

  Alt 11. Jul 2017, 12:59
@stevie & sakura:
Zitat:
21 - 28 bytes : TMBSEncoding x 1
Für mich sieht das schon ziemlich gut nach einem Teil einer FastMM Meldung zu einem Speicherleck aus.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#10

AW: Memoryleak woher?

  Alt 11. Jul 2017, 13:10
Zitat:
21 - 28 bytes : TMBSEncoding x 1
Für mich sieht das schon ziemlich gut nach einem Teil einer FastMM Meldung zu einem Speicherleck aus.
Wie schon oben erwähnt, das von Delphi mitgelieferte ist abgespeckt. Die volle FastMM Version ist um Längen informativer.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  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 13:28 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