AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wie benutzt man MadExcept Memory Leak Detection?

Ein Thema von DieDolly · begonnen am 22. Feb 2021 · letzter Beitrag vom 23. Feb 2021
Antwort Antwort
Seite 2 von 2     12
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
47 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: Wie benutzt man MadExcept Memory Leak Detection?

  Alt 22. Feb 2021, 18:28
Hallo,

Eine Stelle habe ich gefunden in VirtualExplorerTree (siehe ///!!!):

Delphi-Quellcode:
procedure TCustomVirtualExplorerTree.RebuildRootNamespace;
{ This will call InitNode for the root which will look at the FRootFolderNamespace }
{ and rebuild with that as its root after clearing the tree.                       }
var
  NewNodeData: PNodeData;
begin
  if (RebuildRootNamespaceCount = 0) and ShellNotifyManager.OkToDispatch then
  begin
    if not (csLoading in ComponentState) and Assigned(FRootFolderNamespace) then
    begin
      if Active then
      begin
        BeginUpdate;
        try
          if ThreadedImagesEnabled then
            GlobalThreadManager.FlushMessageCache(Self, TID_ICON);
          if ThreadedExpandMarkEnabled then
            ExpandMarkThreadManager.FlushMessageCache(Self, TID_EXPANDMARK);

          // Stupid, clear AFTER flushing! July 8, 2008
          Clear;

          if not(toHideRootFolder in TreeOptions.VETFolderOptions) then
          begin
            NewNodeData := InternalData(RootNode);
            FreeAndNil(NewNodeData.Namespace);
            RootNodeCount := 1;
          end else
          begin
            NewNodeData := InternalData(RootNode);
            if Assigned(NewNodeData) then
            begin
              FreeAndNil(NewNodeData.Namespace);
              NewNodeData.Namespace := TNamespace.Create(PIDLMgr.CopyPIDL(FRootFolderNamespace.AbsolutePIDL), nil);
              //////////!!!!!!!!!!!!!!!!!!!!!!
              RegisterExpectedMemoryLeak(NewNodeData.Namespace);
              /////////!!!!!!!!!!!!!!!!!!!!!!!
              ExpandNamespaceFolder(RootNode);
            end
          end;
        finally
          EndUpdate;
          FocusedNode := GetFirst;
          ChangeLinkDispatch;
          DoRootRebuild
        end;
      end
    end
  end
end;
Die 2 Namespaces werden nicht freigegeben sowie man irgendwo einen VirtualExplorerListView benutzt.

Den 2. hab ich nicht gefunden, MadExcept finde ich da etwas kryptisch. FastMM4 werde ich nicht benutzen, es hat mir schon einmal was zerschossen. Hoffe, das bringt dich etwas weiter.
Renate
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.255 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Wie benutzt man MadExcept Memory Leak Detection?

  Alt 23. Feb 2021, 18:10
Naja, die eigentliche Ursache wird so aber nicht beseitigt.
Die Frage ist, wenn das wo erzeugt wird, dann muss es ja auch irgendwo wieder freigegeben werden.
Tut das diese externe Bibliothek?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
37.514 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Wie benutzt man MadExcept Memory Leak Detection?

  Alt 23. Feb 2021, 18:58
Jupp, eigentlich wäre die Lösung das Speicherleckt zu beseitigen ... drum gibt es ja auch die Suchfunktionen für Lecks.


Nur z.B. bei den Indy ist ein "Leck" drin, weil die in dem ganzen Multithreade es nicht geschafft haben etwas freizugeben. (sie fanden keine gute Stelle dafür)
Aber weil sie es nicht beseitigt bekammen, haben sie es dann wenigstens registriert, damit wir es nicht sehen. (es nicht ständig gemeldet bekommen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Renate Schaaf

Registriert seit: 25. Jun 2020
Ort: Lippe
47 Beiträge
 
Delphi 10.3 Rio
 
#14

AW: Wie benutzt man MadExcept Memory Leak Detection?

  Alt 23. Feb 2021, 19:04
@TurboMagic

Hast du den source code von dem Ding mal angeguckt? Also, ich kann nicht sehen, wo das nicht wieder freigegeben wird. Leider hat sich scheints der ursprüngliche Autor von der Entwicklung zurückgezogen.

@himitsu

Was für Suchfunktionen kann man denn benutzen, um die Stelle zu sehen, wo der Speicher am Ende noch besetzt ist? Bei madExcept kriegt man ganz oben so threads..
Renate

Geändert von Renate Schaaf (23. Feb 2021 um 19:08 Uhr)
  Mit Zitat antworten Zitat
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 17:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf