Voila un bout de code qui fait une chose toute bete, elle charge deux fois 24 images identiques dans un tableau de bufferedimage (sans aucun affichage juste des instanciation).
Mon pb est le suivant : à la fin du chargement des 24 premières images, la conso mémoire dépasse deja les 60 Mo !!!! Alors que mon image n'a vraiment rien d'extraordinaire, c'est une JPEG en compression max qui fait 15 Ko sure mon disque
Apres le chargement je faus un flush sur toutes mes images, la mémoire n'est pas du tout libérée.
Et quand je charge les 24 images suivantes (à partir d'une image du même genre que le première), la conso mémoire explose et j'ai systématiquement une OutOfMemoryException.
Est ce que j'ai oublié de faire quelque chose ? Comment je peux faire pour réduire cette conso mémoire. Il ne me semble pourtant pas que ce petit bout ce code fasse quelque chose de vraiment hallucinant c'est même plutot très basique !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 public class TestImage { private BufferedImage[] tabImages; public TestImage() { System.out.println("début"); tabImages= new BufferedImage[24]; for(int i=0; i<24; i++) { try { tabImages[i] = ImageIO.read(new File("img/image1.jpg")); } catch (IOException e) { System.out.println("Erreur chargement image"); } } for(int i=0; i<24; i++) { tabImages[i].flush(); } for(int i=0; i<24; i++) { try { tabImages[i] = ImageIO.read(new File("img/image2.jpg")); } catch (IOException e) { System.out.println("Erreur chargement image"); } } System.out.println("fin"); } public static void main(String[] args) { TestImage test = new TestImage(); } }
Partager