Announcement

Collapse
No announcement yet.

Programm haut den Speicher voll

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programm haut den Speicher voll

    Hallo Leute!

    Heute habe ich bei meinem Programm einen kleinen Bug entdeckt, der mich doch etwas belästigt.
    Meine Anwendung liest allerhand Einstellungen und Informationen aus dem laufenden System (CPU, OS, RAM, ...).
    Im Programm habe ich eine Refresh Funktion, die auf Tastendruck alle Einstellungen erneut ausliest und darstellt.
    Jetzt habe ich im Taskmanager beobachtet, dass der von meiner Anwendung belegte Speicher bei jedem Refresh steigt.
    Woran kann das liegen? Und wie kann ich sowas verhindern?
    Rein theoretisch kann ich damit den Speicher komplett benutzen (so nach ca. 1000 mal Refresh).

    Für ein paar Antworten wre ich überaus dankbar.

    mfg

    Torsten Bloth

  • #2
    Klingt schwer danach das du in der Refresh-Funktion speicher alloziiertst, aber nicht wieder freigibst.<br>
    Zeig mal Source her

    Comment


    • #3
      Hallo!

      Naja, der Code wird nicht viel bringen, da in der Refresh-Funktion viele andere Prozeduren und Funktionen aufgerufen werde.<br>

      <PRE>
      begin
      SplashForm := TSplashForm.Create(Application);
      SplashForm.Show;
      try
      SplashForm.ShowNextStep(10);
      set_back_1;
      set_back_2;
      SplashForm.ShowNextStep(20);
      os_info;
      SplashForm.ShowNextStep(30);
      cpu_info;
      SplashForm.ShowNextStep(40);
      zeit_seit_start;
      speicher;
      SplashForm.ShowNextStep(50);
      aufloesung_und_farbtiefe;
      SplashForm.ShowNextStep(60);
      bios;
      disk;
      SplashForm.ShowNextStep(70);
      zeitzone;
      SplashForm.ShowNextStep(80);
      netzwerk;
      checkout_speicherverwaltung;
      SplashForm.ShowNextStep(90);
      schriftarten;
      get_Umgebungsvariablen(Form1.Memo_umgebungsvariabl en.Lines);
      checkout_speicherverwaltung;
      SplashForm.ShowNextStep(100);
      finally
      SplashForm.Release; // wird aus dem Speicher entfernt
      end;
      </PRE>

      Hier werden, wie bereits erwähnt, Funktionen und Prozeduren aufgerufen, die allerlei Infos über das laufende OS, CPU, RAM und so weiter ermitteln.<br>
      SplashForm ist lediglich eine kleine Statusanzeige für den Verlauf der Aktualisierung.<br>
      Alle einzelnen Funktionen und Prozeduren aufzulisten wäre auch keine Lösung, da es einfach zu viele sind und die Abhängigkeiten nicht ohne weiteres erkennbar sind.<br>

      mfg

      Torste

      Comment

      Working...
      X