Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi FastMM und/oder ReportMemoryLeaksOnShutdown? (https://www.delphipraxis.net/183846-fastmm-und-oder-reportmemoryleaksonshutdown.html)

Helmi 9. Feb 2015 09:04

FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Hallo,

seit einigen Delphi-Versionen gibt es ja den internen MemoryLeaks-Report, wenn man ReportMemoryLeaksOnShutdown auf true setzt.
(wo setzt man das eigentlich richtigerweise auf true? Projekt-Quelltext oder OnCreate von der MainForm?)

Ich nutze gerne FastMM als erste Unit im Projekt-Quelltext.

Was sollte man am Besten nutzen?
Reicht das systeminterne ReportMemoryLeaksOnShutdown?
Bringt FastMM anstatt mehr?
oder am besten beides?

nuclearping 9. Feb 2015 09:08

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Deine Frage ist etwas .... konfus.

Delphi-Quellcode:
ReportMemoryLeaksOnShutdown
sagt dir nur, wieviel wovon noch nicht freigegeben wurde. Du hast aber sonst keine Möglichkeiten herauszufinden, wie und wo die Leaks ihren Lauf nahmen. Wenn dir das zum Debuggen deiner Anwendung aber schon reicht, dann brauchst du kein FastMM4.

An die Auflösung eines
Delphi-Quellcode:
FullDebugMode
und
Delphi-Quellcode:
LogMemoryLeakDetailToFile
Builds kommt das Delphi-interne Zeug auf jeden Fall aber nicht ran.

Helmi 9. Feb 2015 09:12

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
hab gerade einen Test gemacht

es kommt zwei mal der gleiche Report raus (nur einmal in englisch und einmal in deutsch bei FastMM).

Nur bei FastMM mit dem Zusatz dass man sich noch ein Log schreiben lassen kann

Daniel 9. Feb 2015 09:16

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
FastMM hat eine etwas längliche .inc-Datei, über die Du das Verhalten steuern kannst. Dort kannst Du auch den FullDebugMode aktivieren, der eine tiefere Analyse des Speicherverhaltens Deiner Anwendung erlaubt. Dieser hat jedoch seinen Preis: Du wirst merken, dass die Ausführungsgeschwindigkeit sinkt (darum ja auch "Debug-Mode").
Dem FastMM-Paket liegt eine DebugModeDLL bei, die Du für Deine Anwendung verfügbar machen musst, solange dieser Debug-Modus aktiv ist.

Wenn Dir das Gefuddel mit der .inc-Datei zu lästig ist, hat Jeremy North eine GUI dafür geschrieben:
http://jed-software.com/blog/?p=606

samso 9. Feb 2015 09:19

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Die globale Variable ReportMemoryLeaksOnShutdown wird bei den neueren Delphis auch von der separaten unit FastMM benutzt. In sofern gibt es die Unterscheidung zwischen "Intern" und "Extern" nicht. Ich setze das immer in der *.dpr Datei:

Delphi-Quellcode:
  {$ifdef Debug}
  {$WARN SYMBOL_PLATFORM OFF}
  ReportMemoryLeaksOnShutdown := DebugHook<>0;
  {$endif}

Helmi 9. Feb 2015 09:21

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
oooh - Cheffe persönlich :-)

das heisst, den "internen FastMM" kann man nicht einstellen?

dann bleib ich bei dem "externen" FastMM

die GUI schaut gut aus - schöner als das manuelle durchfriemeln von der inc-Datei

Daniel 9. Feb 2015 09:25

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Für den normalen Alltagsbetrieb unterscheidet sich der dem Delphi beigelegte FastMM nicht von der externen Variante - der ist keinen Deut besser oder schlechter.
Nur diese erweiterten Debug-Möglichkeiten kommen lediglich mit der externen Fassung.

Helmi 9. Feb 2015 09:29

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
in beiden Varianten muss ich eine Zeile einfügen

für das interene FastMM eben die ReportMemoryLeaksOnShutdown
und fürs externe FastMM FastMM4 unter uses

da ist es schon egal

himitsu 9. Feb 2015 09:42

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Der interne FastMM steckt ja direkt in der System.pas, bzw. ist in die RTL gelinkt
und da man das alles im Allgemeinen nicht neu kompiliert, wurde dort die INC und alles mögliche Zusatzzeugs entfernt.

Insider2004 9. Feb 2015 09:48

AW: FastMM und/oder ReportMemoryLeaksOnShutdown?
 
Der "externe" FastMM ist deutlich mächtiger, als der Delphi-FastMM. Der wurde um seine Debugfähigkeiten beschnitten. Der ist sozusagen nur bei Releases zu gebrauchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:31 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