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.
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 ]