[Java] Images et IE

Images et IE [Java] - Programmation

Marsh Posté le 06-03-2002 à 10:50:30    

J'ai une applet qui utilise beaucoup d'images et donc prend beaucoup de ram. Lorsque mon applet est terminée, même en mettant à null mes images et en tuant mon buffer (graphics), la ram ne se vide pas tant que IE n'est pas fermé (même si je ferme la fenêtre de l'applet et qu'une autre fenêtre IE est ouverte).
Comment faire pour libérer la ram (j'ai déjà essayé garbage collector et Image=null) :??: merci

Reply

Marsh Posté le 06-03-2002 à 10:50:30   

Reply

Marsh Posté le 06-03-2002 à 10:57:45    

tu as déjà fait un topic là dessus.  
 
http://forum.hardware.fr/forum2.ph [...] c=1&trash=
 
balance ton code ce sera peut etre plus simple


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 06-03-2002 à 11:30:36    

Bon voilà, c'est mon code simplifié...
 
public class monapplet extends Applet implements runnable
{
 
 private Graphics gBuffer;
 private Image background[];
 private Image course;
 
 
// Init
public void init()
{
 //Création d'une image de la taille de l'applet
 imb= createImage(640,480);
 gBuffer=imb.getGraphics();
 for (i=0;i<4;i++)
 {
  background[i]=getImage(getCodeBase(),"images/Me
nu/choix"+i+".jpg" );
 }
}
 
 
public void run()
{
 while(ma_condition !=0)
 {
  repaint();
  gBuffer.drawImage(background[0],0,0,this);
  traitement();
  // clic à un endroit
  ma_condition=0;
 }
 ma_condition=1;
 while(ma_condition !=0)
 {
  repaint();
  gBuffer.drawImage(background[1],0,0,this);
  traitement();
  // clic à un endroit
  ma_condition=0;
 }
 ma_condition=1;
etc....
 
 
 
 // quand c'est la fin, on clic qq part et on lance nettoyer().
 // après, on redirige le navigateur vers une nouvelle page internet.
 
 AppletContext jeu2 = getAppletContext();
 while (ma_condition!=0)
 {
  try
  {
   url_suivante = new URL("file:c:/toto/tata.html);
   jeu2.showDocument(url_suivante);
  }
  catch (java.net.MalformedURLException u)
  {
   System.out.println("URL mal formée !" );
  }
 }
}
 
// gestion du double buffering
public void update(Graphics g)
{
 paint(g);
}
public void paint(Graphics g)
{
 g.drawImage (imb,0,0, this);
}
 
 
public void nettoyer()
{
 System.out.println("On nettoie" );
 background[0]=null;
 background[1]=null;
 background[2]=null;
 background[3]=null;
 background[4]=null;
 course=null;
 System.gc();
 System.runFinalization();
 gBuffer.dispose();
 //g.finalize();
 System.gc();
 System.runFinalization();
}
 
}

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed