Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#8

AW: Delphi 7 - Speicherleck

  Alt 30. Jun 2016, 10:30
Hi,
die Ausgabe erfolgt in ein Memo.
Das Memo hält 500 Zeilen. Wird der Eintrag 501 fällig wird der Eintrag 0 gelöscht.
Die Ausgaben sind weiter nicht umfangreich... Sagen wir ~ 50 Zeichen pro Zeile.

Im Taskmanager nimmt die Anzahl der Handles ebenfalls zu.


@Sir Rufo:
TComponent wird nicht verwendet in der Applikation.
Wir haben eine eigene Delphi-Lib in der Firma, in der die TComponent vielfach eingesetzt ist.
Aber die Lib ist in allen Programmen im Einsatz die wir so haben (Delphi 7). Daher würd ich diese Lib mal ausschließen, da das Problem in den anderen Applikationen nicht auftritt
Das Letztgenannte (an SirRufo gerichtete) gilt aber nur, wenn aus der Lib zur Laufzeit nicht "permanent" neue Objekte erstellt werden. Andernfalls kann der genannte Fehler auch in der Lib liegen, fällt bei anderen Programmen nur nicht auf, wenn sie nicht während der Laufzeit kontinuierlich neue Objekte erzeugen.

Wenn die Handles zunehmen, so wird auch zunehmend Speicher verbraucht. Da wirst Du mal nachsehen müssen, wo die Handels "erstellt" und nicht wieder aufgeräumt werden (1. Speicherlecksuchbaustelle in der Gegend um die Sockets herum).

Bin mir nicht so ganz sicher, aber die Methode "Log-in-Memo" hab' ich auch schonmal irgendwann genutzt. Wenn 'ne bestimmte Zeilenzahl erreicht ist, werfe man die erste Zeile weg, bevor man hinten noch eine dranhängt. Da hatte ich auf die Dauer irgendwann auch Speicherprobleme. Weiß aber nicht mehr, in welchem Umfang.

Zum Anzeigen von Log-Dateien benutze ich seit einiger Zeit den ATViewer.
Geloggt wird in eine Datei. Der Viewer wird einfach aufs Fomuler "gepappt". er kann so konfiguriert werden, dass er bei "Neuerungen" an der Datei automatisch an deren Ende wandert. So sieht man in der Oberfläche immer die neuesten Zeilen, kann aber per Scrollbar natürlich durch die ganze Datei "Wandern". Mit zunehmender Dateigröße scheint er aber nicht zunehmend Speicher zu verbrauchen, er lädt wohl nur soviel aus der Datei, wie er auch anzeigen kann. Zumindest sind mir im Zusammenhang mit seiner Nutzung keine exorbitanten Speicherzuwächse aufgefallen.

Die Logdateien erstelle ich immer so, dass sie nicht zu groß werden, z. B. alle 24 Stunden wird 'ne neue angefangen (oder alle Stunde ...).
Dadurch spare ich mir die "Stringmengenumkopiererei" in der Oberfläche. Log-Dateien kann man ja, wenn sie nicht historisiert werden müssen, regelmäßig wegwerfen oder, wenn eine bestimmte Dateigröße erreicht wurde, löschen und wieder neu erstellen.
  Mit Zitat antworten Zitat