Bonjour à tous, je me pose une petite question sur la gestion de la mémoire en Java.
J'utilise cette procédure.
Dont le seul but est de lire une image, de la redimensionner à la bonne échelle et de l'enregistrer dans un fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void enregistreImage(String name) { Image img = new ImageIcon("images/"+name).getImage().getScaledInstance(640*facteurEchelle/100, 640*facteurEchelle/100, Image.SCALE_SMOOTH); File f = new File("use/"+name); try { ImageIO.write(toBufferedImage(img), "png", f); } catch (IOException e) { e.printStackTrace(); }
Cette procédure est appelée 30 fois dans le programme pour 30 images différentes.
Le seul soucis c'est que l'utilisation de la mémoire explose (190 Mo supplémentaire depuis que j'ai instauré ce système)
D'après ce que j'ai pu lire, le garbage collector serait censé libérer la mémoire automatiquement.
Or la variable img étant locale à la procédure, elle devrait être détruite à la fin de chaque appel.
Y a-t-il un moyen de forcer le programme à libérer la mémoire de ces images qui semblent perdurer ?
Ou est ce que j'aurais mal compris quelque chose ?
Merci.
Partager