Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Problem mit garbage collecor in java

MRPSV1 / 5 Antworten / Flachansicht Nickles

Hallo Leute
Ich habe ein Programm geschrieben mit dem man im Netzwerk ganz einfach Dateien austauschen kann. So bisher funktioniert das Programm super, es tauscht die Dateien aus, egal welches Format und sie sind auch am ende immer noch ausführbar und so. Ich ich lese die Dateien in ein byte array ein, was 1mb groß is und sende dieses Array über dem Stream raus. Aber jedes mal wenn er den nächsten mb aus der Datei lesen soll erstellt es das byte array in einer Schleife mit new byte neu und das Array mit dem vorherigen mb aus der Datei bleibt im Arbeitsspeicher vorhanden und lässt sich mit dem garbage collector auch nicht entfernen. wenn ich z.B. eine Datei sende die 20mb groß ist steigt der Arbeitsspeicher verbrauch meines Programms während des sendens und bleibt so groß. Wenn ich dann auch diese Datei nochmal senden würde hält das Programm während des sendens an und ich bekomme einen Fehler ausgegeben das der Heapspace voll ist. was muss ich tun um die gesendete Datei wieder aus dem Arbeitsspeicher wieder gelöscht wird?? auch System.gc(); nützt nichts.

Danke schonmal im vorraus.

bei Antwort benachrichtigen
MRPSV1 Nachtrag zu: „ich hab da noch ein idee. kann das vieleicht an den threads liegen??denn ich hab...“
Optionen

Also es war nicht das byte array....hab mich da irgentwie vertan. Ich hab noch herausgefunden das es daran liegt das alles was man in den ObjectOutputStream schreibt und raussendet bliebt irgentwie im Arbeitsspeicher vorhanden. Hat jemand ne Idee was das sein könnte??
Danke schonmal.

bei Antwort benachrichtigen