PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Speicherleck mit Webservice und AWT-Image



SirLacy
16-06-2008, 14:16
Hallo!

ich habe hier einen Webservice laufen, dem mit Hilfe von mtom aus meiner Java-Anwendung ein Bild geschickt werden kann. Mit dem Metro-Framework habe ich mir aus der WSDL-Datei die entsprechenden Klassen erstellt, als Parameter für den Webservice-Aufruf wird ein AWT-Image benötigt.

Funktioniert auch alles ganz toll, aber beim Aufruf der Webservice-Methode wird Heap-Speicher reserviert und später nicht mehr freigegeben, sodass meine Anwendung sich irgendwann mangels Speicher verabschiedet. Den Heap-Speicher zu vergrößern zögert das Problem nur hinaus. Dann kann ich ein paar mehr Bilder schicken, bis sich ich einen Fehler bekomme.

Hat jemand schonmal was ähnliches erlebt und weiß Rat?

Waxolunist
16-06-2008, 22:18
Wie rufst du den Webservice auf?

Hast du eh keine Referenzen mehr vom Bild im Speicher?

Vielleicht kannst du den Code ja posten und dann könnte man diesen besser analysieren.

Lg, Christian

mwanaheri
17-06-2008, 02:09
Hm, bist du sicher, dass es sich um ein Speicherleck handelt? Kann es nicht auch ein versehentliches mehrfaches Objekterzeugen sein? Speicherleck wäre schon hart und sicher eine Meldung an Sun wert.

Lin728
18-06-2008, 11:33
Mittels jconsole kann man einen heap-dump machen, den man anschließend mit jhat analysieren kann.
In 99,9% der Fälle sinds wirklich referenzen im eigenen Code welche java daran hindern des zeugs wegzuräumen ;)

SirLacy
18-06-2008, 13:07
Ich hab das Problem behoben. Der Knackpunkt lag darin, dass ich dem Webservice-Aufruf ein AWT-Image übergebe. Das wurde dann nicht wieder von der Garbage-Collection beseitigt, weil scheinbar noch irgendwo Referenzen darauf waren (bei mir im Code jedenfalls nicht).
Jetzt verschicke ich das Bild als Byte-Array und die ganze Sache funktioniert. Trotzdem Danke an alle, die geantwortet haben.