Bonsoir,

J'ai une augmantation importante de la memoire ram avec ce code:

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
 
 [...]
 
out = new ObjectOutputStream(socket.getOutputStream());
in = new ObjectInputStream(socket.getInputStream());
 
while (true) {  	
 
ImageIcon img = (ImageIcon) in.readObject();
 
 try {
 
canvas.setBackgroundImage(makeSWTImage(d,img.getImage()));	
 
 } catch (OutOfMemoryError e) {
 
System.gc();
} catch (Exception e) {
// TODO Auto-generated catch block
										e.printStackTrace();
 
  }
);			        	        
 
 
 }
Je fais des captures d'ecran dans une boucle while... La mémoire augemente petit a petit... Je crois avoir trouver le coupable, cette fonction: makeSWTImage(d, img.getImage()) //elle permet de convertire une image AWT en une image SWT

Voici cette fameuse fonction:
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
 
 org.eclipse.swt.graphics.Image makeSWTImage(Display display, java.awt.Image ai)
	    throws Exception
	  {
	    int width = ai.getWidth(null);
	    int height = ai.getHeight(null);
	    BufferedImage bufferedImage = null;
	    bufferedImage =  new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
	    Graphics2D g2d = null;
	    	g2d = bufferedImage.createGraphics();
	    g2d.drawImage(ai, 0, 0, null);
	    g2d.dispose();
	    int[] data = null;
	      data = ((DataBufferInt)bufferedImage.getData().getDataBuffer())
	      .getData();
	    ImageData imageData = null;
	     imageData = new ImageData(width, height, 24,
	        new PaletteData(0xFF0000, 0x00FF00, 0x0000FF));
	    imageData.setPixels(0, 0, data.length, data, 0);
	    org.eclipse.swt.graphics.Image swtImage = new org.eclipse.swt.graphics.Image(display, imageData);
 
	    return swtImage;
	  }
Apres plusieurs jours de recherche et de galère j'espère que vous pourrez me donner un petit coup de main ^^

Merci.

Olivier