Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Arbeitsspeicher läuft voll
xxtachxx
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

Arbeitsspeicher läuft voll

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16.196

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
xxtachxx
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

Fehler gefunden

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers