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 :
Cela arrive lorsque le client a demande une dizaines d'images. Donc 10 images ont ete crees sur le serveur.Exception in thread "Thread-4" java.lang.OutOfMemoryError: Java heap space
Pour etre precis j'obtiens cette erreur dans ma methode createpicture :
Jusque la je n'ai pas de probleme dans son execution. J'ai meme ajoute
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);
ScanImage=null; pour etre sur que Scanimage est null et libere la memoire . Mais est ce bien utile ?
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.
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);
le reste du code c'est la creation d'une image a partir des pixels extraits mais l'erreur vient du bout precedent
Quelles sont vos suggestions pour eliminer cette erreur qui apparait sur le serveur ? Le client n'affiche pas cette erreur, seulememt le serveur!
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; }
A+
Partager