[Java] OutOfMemoryError bij het laden van images

Pagina: 1
Acties:

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 02:47
Situatie:

Ik heb een eenvoudige klasse gemaakt die een image file laadt van de lokale schijf of uit een URL en die vervolgens naar het scherm afdrukt. De image file wordt in de constructor geladen. De methode draw controleert of de image file volledig geladen is. Als dat zo is wordt de image op het scherm afgebeeld, anders wordt er een status bericht weergegeven.

Voor de duidelijkheid, het is een opdracht vanuit mijn opleiding, waarvoor we een klasse moeten maken die een image afdrukt op het scherm. Voor die klasse moeten we dan weer een Virtual Proxy schrijven. Dit lijkt mij overigens totaal overbodig, want zodra ik in de klasse Foto de image pas laad wanneer dat nodig is (in de methode draw) wordt de klasse Foto zelf een soort Virtual Proxy voor de klasse Image. De rest van de klasse Foto neemt niet dusdanig veel resources in beslag dat daar een Virtual Proxy voor nodig is. Ik weet dus dat het direct laden van de image vanuit de constructor niet handig is, maar dat heb ik dus expres zo gedaan.


Probleem:

Ergens in deze klasse zit een fout, waardoor er steeds een OutOfMemoryError optreedt, wanneer ik van meerdere instanties van deze klasse de methode draw aanroep. Een "oplossing" die ik nu gebruik is een handmatige aanoep van de garbage collector nadat de image is afgebeeld. Dit zou AFAIK echter nooit moeten.
Waar gaat het nou precies mis? Ik zie het niet.

Edit: Code weggehaald.

[ Voor 55% gewijzigd door Kwistnix op 07-09-2004 22:21 ]


Verwijderd

ik ga je code niet anlyseren maar out of memory heeft 9 van de 10 te maken met een lus tot het oneindige

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 02:47
Bedankt voor de tip!
Ik heb die methode draw nog eens goed doorgenomen en daar zit inderdaad een loop in. Niet oneindig welliswaar, maar zodra repaint() wordt aangeroepen roept ie steeds prepareImage() opnieuw aan en dat moet natuurlijk niet!
Een if-statement toegevoegd die controleert of prepareImage al is aangeroepen en het is opgelost.


Edit: Niet dus :/

Het heeft dus iets te maken met Font en FontMetrics.

[ Voor 12% gewijzigd door Kwistnix op 07-09-2004 19:04 ]