Bonjour j'ai un probleme avec mon client/serveur.
Le client peut afficher des images sur un mobile. Le probleme c'est qu'apres plusieurs images envoyes sur le client j'obtiens cette erreur :

Exception in thread "Thread-4" java.lang.OutOfMemoryError: Java heap space
Cela arrive lorsque le client a demande une dizaines d'images. Donc 10 images ont ete crees sur le serveur.

Pour etre precis j'obtiens cette erreur dans ma methode createpicture :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
    public BufferedImage CreatePicture(int wi,int ho,int minX,int minY,int int_slice)
    {
        try
        {
  ScanImage=null;
  ScanImage = new BufferedImage(wi,ho,BufferedImage.TYPE_INT_RGB);
Jusque la je n'ai pas de probleme dans son execution. J'ai meme ajoute
ScanImage=null; pour etre sur que Scanimage est null et libere la memoire . Mais est ce bien utile ?



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
  DataInputStream dis = new DataInputStream(new
  FileInputStream(str_datasetPath));
  dis.skipBytes(24+int_slice*int_nbByteImage);//24 stands for the header 6 short + 3float
  byte[] byte_voxel = new byte[int_nbByteImage];
  dis.readFully(byte_voxel);
ce bout de code permet de recuperer les pixels d'une image dans un dataset. C'est dans ce bout de code que apparait l'erreur java heap space.

le reste du code c'est la creation d'une image a partir des pixels extraits mais l'erreur vient du bout precedent
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
 
  for(int y=0; y<ho; y++)
            {
                int i = (y+minY)*widthInVoxels*2;
                for(int x=0; x<wi*2; x+=2)
                {
                    short sht_voxel = (short)((((byte_voxel[i+x+minX]&
0x000000ff) << 8) | (byte_voxel[i+x+1+minX]& 0x000000ff))-minDensityValue&
0x0000ffff);
                    sht_voxel = (short)(sht_voxel*255/int_ColorRange);
//convert the voxel value into a range from 0 to 255
                  //  System.out.println("Viewer:CreatePicture test at x="+x);
                    ScanImage.setRGB((x)/2,y, sht_voxel << 16 | sht_voxel
<< 8 | sht_voxel);
                }
               // System.out.println("Viewer:CreatePicture test at y="+y);
            }
 
 
        }catch(Exception e){System.out.println("Can't display: " +
e);}
//      return the image
    	System.out.println("Viewer:CreatePicture finishing ok");
		return ScanImage;
    }
Quelles sont vos suggestions pour eliminer cette erreur qui apparait sur le serveur ? Le client n'affiche pas cette erreur, seulememt le serveur!

A+