Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi belegter Speicher wächst, wenn Programm minimiert ist (https://www.delphipraxis.net/55807-belegter-speicher-waechst-wenn-programm-minimiert-ist.html)

Stefan Dieler 27. Okt 2005 10:34


belegter Speicher wächst, wenn Programm minimiert ist
 
Hallo zusammen,

ich habe in Phänomen entdeckt.
In meinem Programm werden im Hintergrund Aufnahmen der Soundkarte mittels MCISendString gemacht. Wenn das Programm im Maximiert ist, dann bleibt der Speicher klein.
Wenn ich aber das Programm in die Trayleiste minimiere (CoolTrayIcon), dann wächst der Speicher stetig an, bis irgendwann die StringGrids, die nach jeder Aufnahme neu aufgebaut werden, nicht mehr angezeigt werden. Alles andere im Programm funktioniert problemlos weiter.
Hat jemand eine Idee, warum der Speicher anwächst, wenn das Programm im Tray minimiert ist?!

Vielen Dank an alle!!!

Bernhard Geyer 27. Okt 2005 11:01

Re: belegter Speicher wächst, wenn Programm minimiert ist
 
Überprüfe mal dein Programm auf Speicherlecks mittels FastMM oder MemCheck.

Stefan Dieler 28. Okt 2005 07:43

Re: belegter Speicher wächst, wenn Programm minimiert ist
 
Hallo,

ich habe das gestern noch mal bisschen analysiert und der Speicher wächst auch an, wenn das Programm nur in die normale Taskleiste minimiert ist. Sobald das Programm maxmimiert ist läuft es einwandfrei.
Mit den Tools zum Speicherleck finden kenne ich micht nicht aus, gibt es da auch die Möglichkeit zu sehen, wie die Objekte heißen, die den Speicher fressen?!

RavenIV 28. Okt 2005 07:55

Re: belegter Speicher wächst, wenn Programm minimiert ist
 
schau einfach manuell, ob Du alle Objekte, die Du anlegst auch wieder zur richtigen Zeit freigibst.
Interssant ist das vor allem bei "New" und bei TList-Abkömmlingen.
Aber auch Streams und andere Objekte können MemLeaks verursachen, wenn sie nicht richtig verwendet werden.

zeig uns doch mal den Quellcode, dann können wir das auch analysieren und müssen nicht spekulieren...

Flocke 28. Okt 2005 09:02

Re: belegter Speicher wächst, wenn Programm minimiert ist
 
Zitat:

Zitat von Stefan Dieler
Mit den Tools zum Speicherleck finden kenne ich micht nicht aus, gibt es da auch die Möglichkeit zu sehen, wie die Objekte heißen, die den Speicher fressen?!

Also MemCheck ist z.B. ganz einfach zu benutzen:

Öffne deine DPR-Datei ("Projekt-Quelltext anzeigen") und füge MemCheck als allererste Unit in die uses-Klausel ein. Dann rufe als erstes nach dem begin der Hauptprozedur MemChk auf.

Delphi-Quellcode:
program MemCheckTest;

uses
  MemCheck, // <-- hier

  SysUtils,
  Forms,
  { ... deine alten Units }
  ;

{$R *.RES}

begin
  MemChk; // <-- hier

  Application.Initialize;
  { ... der alte Code }
end.
Beim Programmende wird dann ein kleiner Bericht (eine Textdatei) geöffnet, die dir evtl. Speicherlecks anzeigt.

Du solltest dann zum Testen auch TD32-Debug-Informationen einschalten, dann zeigt die der Bericht sogar an, wo im Quelltext der Speicher angefordert wurde.

RavenIV 28. Okt 2005 09:09

Re: belegter Speicher wächst, wenn Programm minimiert ist
 
Zitat:

Zitat von Flocke
Öffne deine DPR-Datei ("Projekt-Quelltext anzeigen") und füge MemCheck als allererste Unit in die uses-Klausel ein. Dann rufe als erstes nach dem begin der Hauptprozedur MemChk auf.

wenn ich mit Forms arbeite, was ist denn dann die Hauptprocedure?
FormCreate? FormShow? oder was?

/Edit: hat sich erledigt durch RTFM.
-> es ist in der .dpr


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 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-2025 by Thomas Breitkreuz