|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Nicolas Étudiant Inscription : février 2011 Messages : 7 ![]() |
Bonjour,
Je suis assez embêté par un petit problème. J'essaye de coder un programme qui va rechercher des images (format jpeg, png, ...) sur le disque et qui crée des icones miniatures pour les afficher. Ma démarche est la suivante: j'ouvre l'image dans un "BufferedImage", je calcule la futur taille de la miniature puis je met cette miniature dans un ImageIcon. Voici la fonction qui effectue cette tâche. Code :
J'en déduit donc que le garbage collector ne nettoie pas les bufferedImage (qui contiennent de images assez grandes) malgré mes tentatvies pour forcer la désallocation de mémoire Si quelqu'un a une idée je suis preneur Merci d'avance
|
||
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Ingénieur développement logiciels Inscription : avril 2007 Messages : 106 ![]() |
Salut,
Au lieu de faire ton img = null à la fin, essaie un img.flush() |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Nicolas Étudiant Inscription : février 2011 Messages : 7 ![]() |
Malheureusement ça n'a pas l'air de marcher beaucoup mieux
Mais merci quand même pour la réponse PS: Je ne l'ai pas dit plus haut mais j'utilise java 1.6 (juste au cas où) |
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() |
le System.gc, tu oublie tout de suite ue ça existe, car ça ne fais pas ce que tu veux. Si tu as un out of memory, c'est que le garbage collector a déjà nettoyé et qu'il n'a plsu rien trouvé de récupérable.
Dans ton cas, tu utilise image.getScaledInstance(). La doc sous entends que cette image réduit ne fait que dessiner l'image principale à une taille plus petite => Elle garde une référence vers l'image principale. Crée toi même une nouvelle BufferedImage plus petite et utilise les méthodes de la classe Graphics2D pour dessiner une fois pour toute la grande dans la petite. (appel à graphics.drawImage prenant en paramèter un AffineTransform pour la dessiner)
__________________
⥀⥁ Чиз faq java, cours java, javadoc. Pensez à et ![]() Laisse entrer le jour après une nuit sombre. Si tu es toujours là, tu n'es pas faite pour mourir. |
|
|
20
|
|
|
#5 | ||||
|
Invité de passage
![]() Nicolas Étudiant Inscription : février 2011 Messages : 7 ![]() |
Merci, ça consomme déjà beaucoup moins
Le problème vient bien du fait que Code :
Si quelqu'un se retrouve confronté un problème similaire, voici comment j'ai implémenté la création de l'image réduite: Code :
|
||||
|
|
10
|
Copyright © 2000-2013 - www.developpez.com