AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Speicherbenutzung nach wochenlanger Benutzung
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherbenutzung nach wochenlanger Benutzung

Ein Thema von Alex_ITA01 · begonnen am 12. Jun 2012 · letzter Beitrag vom 20. Jun 2012
 
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#1

Speicherbenutzung nach wochenlanger Benutzung

  Alt 12. Jun 2012, 10:37
Hallo zusammen,
ich habe ein Problem und hoffe ich kann es einigermaßen verständlich rüberbringen und ihr könnt mir ein paar Tipps geben
Wenn unsere Anwendung mehrere Wochen durchgängig läuft (2-3 Wochen), hat man immer folgendes Erscheinungsbild. Der Speicher wächst kontinuierlich an und bei 1,55GB ist Schluss (ich weiß, dass nur max 2GB für eine Anwendung zur Verfügung stehen)...
Das 3GB Flag würde das Problem wahrscheinlich nur zeitlich nach "hinten" schieben.
Ausgelesen wird der Speicher wie folgt:

Delphi-Quellcode:
function GetRAMUsage: Int64;
var
  pmc : PPROCESS_MEMORY_COUNTERS;
  MemWert : Int64;
  cb : Integer;
begin
  MemWert := 0;
  cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
  GetMem(pmc, cb);
  try
    pmc^.cb := cb;
    if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then
    begin
      MemWert := pmc^.WorkingSetSize;
    end;
  finally
    FreeMem(pmc);
  end;
  Result := MemWert;
end;
Den Quelltext kann ich leider nicht posten (Firmen-Quelltext). Ich kann euch aber bisschen erklären wie die Sachen so ablaufen in der Anwendung.
Verwendet wird Win7 sowohl 32bit als auch 64bit mit Delphi 2009.

1)
Es gibt eine Menge Threads, die sich alle untereinander über die Thread-Message-Queue unterhalten. Jeder Thread prüft seine Nachrichten Warteschlange und löscht dort die Nachrichten raus, wenn welche eingetroffen sind.

2)
Wir arbeiten viel mit dem Typ TList und haben davon ca. 50 Stück im Einsatz. Enthalten sind natürlich Zeiger darin. In einigen Listen ist immer viel "Bewegung" vorhanden (also Einträge löschen, hinzufügen usw. -> natürlich immer mit New/Dispose). Einige Listen sammeln für ein ganzen Tag Daten und beim Datumswechsel (Tagwechsel) werden diese Listen mit einem Rutsch freigegeben und die Liste gelöscht. Jede Liste hat auch eine unterschiedliche Datenstrukturgröße die sie verwaltet.

Ich bin schon die ganze Zeit auf der Suche ob da ein Speicherleck oder ähnliches vorhanden ist aber ich finde einfach nix. Kann es auch sein, dass einfach mit der Zeit, der Speicher fragmentiert und damit keine größeren zusammenhängenden Blöcke Speicher reserviert werden können?
Das Erscheinungsbild ist auch irgendwie so, dass ca. 2Wochen der Speicher recht konstant bleibt und dann innerhalb von 2-3h der Speicher bis auf die erwähnten 1,55GB ansteigt obwohl keine andere Bedienhandlung oder ähnliches ausgeführt wurde.

Ich hoffe ihr habt einfach paar Tipps oder Ideen, wo bzw. wie ich weitersuchen kann.

Danke im voraus

Edit:
Nachtrag: Ich habe zum Beispiel auch eine Liste, die 5MB groß ist für einen Tag. Beim Tageswechsel geht eine Schleife über die ganze Liste und "Disposed" die Items und löscht die Liste am Ende. Allerdings sehe ich im TaskManager nicht, dass diese 5MB wirklich wieder frei sind, der Speicher der Anwendung bleibt bei dem gleichen Wert.
Mit "Speicher" meine ich immer den Speicher welchen wie oben ausgelesen wird...
Let's fetz sprach der Frosch und sprang in den Mixer

Geändert von Alex_ITA01 (12. Jun 2012 um 10:46 Uhr)
  Mit Zitat antworten Zitat
 


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 08:21 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