Laden...

Arbeitsspeicher läuft voll

Erstellt von xxtachxx vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.478 Views
X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 9 Jahren
Arbeitsspeicher läuft voll

Hallo Leute,

ich habe ein kleines Problem. Ich habe gestern ein kleines Programm erstellt, um Fotos von Facebook runterladen zu können.
Das Programm verbraucht aber immer mehr Arbeitsspeicher. Wenn es ca 15min läuft ist es schon über 1 GB.
Leider hab ich keine Ahnung warum das ist.

Ich beschreibe mal kurz die Funktionsweise:

  • Es läd die Seite mit den Fotos
  • Speichert den Quellcode
  • Ließt die URLs aus
  • Speichert diese in eine Datenbank

Falls jemand sich damit auskennt, könnte ich ihm das Projekt mal senden.
Es ist nicht so groß, weniger als 300 Zeilen.

Aber mir ist aufgefallen, jedes mal wenn der Webbrowser eine neue Seite geladen hat, wird im Taskmanager mehr Arbeitsspeicher angezeigt.

Vielleicht gibt es auch einfach ein paar Allgemeine Sachen die mir einfach fehlen.

Wäre echt nett wenn mir jemand helfen könnte.

16.828 Beiträge seit 2008
vor 9 Jahren

Vermutlich verwendest Du die ganzen Ressourcen falsch.
Es gibt Elemente, die Du "disposen" musst. Tust Du das nicht wird der Speicher trotz GC auch nicht freigegeben.

Typische Elemente sind: WebRequests, Bitmap-Objekte, Streams...
Siehe auch Wie funktioniert Dispose und wann soll es verwendet werden

Ansonsten, wie Millionenfach nachzulesen, ist der Task-Manager kein verlässliches Tool für das Messen von RAM-Verbräuchen.
1GB bei so einem kleinen Tool spricht aber für ein Leck, das auch jeder Profiler finden sollte.

X
xxtachxx Themenstarter:in
13 Beiträge seit 2013
vor 9 Jahren
Fehler gefunden

Ich hab den Fehler schon gefunden.

Habe schon alle Elemente zurückgesetzt, das war nicht das Problem.
Nur ich hatte folgendes gemacht:
(Vereinfacht dargestellt, natürlich war es ein bisschen komplexer)

void Task1()
{
      Task2();
}

void Task2()
{
      Task1();
}

Sowas in der Art. Das heißt es hat sich immerweiter verzweigt. Mitlerweile bleibt es konstant bei 70-150 MB.
Bei Über 4000 Datenbankeinträgen ist das schon mal gut.

Aber trotzdem danke für die Hilfe