Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1428 connectés 

  FORUM HardWare.fr
  Programmation

  [Java] Détruire une image

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Détruire une image

n°106011
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2002 à 13:43:35  profilanswer
 

Je voudrais savoir comment détruire une image (au cours de l'exécution d'une applet) qui ne sert plus dans une applet java (le but est donc de libérer la ram)? Merci.

mood
Publicité
Posté le 28-02-2002 à 13:43:35  profilanswer
 

n°106014
jupiler
Un cousin...
Posté le 28-02-2002 à 13:54:40  profilanswer
 

tu peux appeler la méthode finalize() de l'objet


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°106016
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 28-02-2002 à 13:55:08  profilanswer
 

mettre toute les références de l'image à null et fait System.gc();
 
Mais bon le gc se lancera quand il l'aura décidé et un appel à System.gc() ne signfie en aucune manière une exécution synchrone du garbage collector.
 
Pq veut tu faire ca? Je ne suis pas persuadé qu'une simple image te pose autant de problème.


---------------
What is popular is not always right, what is right is not always popular :D
n°106017
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 28-02-2002 à 13:55:56  profilanswer
 

jupiler a écrit a écrit :

tu peux appeler la méthode finalize() de l'objet  




 
 :??:  
 
 :non:  :non:  :non:


---------------
What is popular is not always right, what is right is not always popular :D
n°106026
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2002 à 14:03:23  profilanswer
 

Le pb, c'est que j'ai pleins d'images qui se lancent au fur et à mesure, et arrivé au bout de mon applet, c'est très lent (plus de ram).
 
J'ai déjà essayé : mon_image=null;
                   System.gc();
 
Cela ne marche pas, la ram ne bouge pas d'un yota !
Je vais essayer finalize(). Faut faire un truc du genre:
                 mon_image.finalize();   ?????
 
Si ça marche pas, y a t-il d'autres solutions ?
 
Merci.

n°106031
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 28-02-2002 à 14:11:34  profilanswer
 

rufo a écrit a écrit :

Le pb, c'est que j'ai pleins d'images qui se lancent au fur et à mesure, et arrivé au bout de mon applet, c'est très lent (plus de ram).
 
J'ai déjà essayé : mon_image=null;
                   System.gc();




 
Tu dois virer TOUTES les références de l'image. Donc si tu passes ton image en référence à d'autre endroit il faut également vérifier ce genre de truc. Le meilleur moyen est d'avoir une méthode qui te renvoit l'image et de mettre cette référence là à null
 
Logiquement le GC doit se lancer lorqu'il juge que ca commence à etre juste au niveau occupation memoire
 
Lancer finalize ne fera strictement rien, c'est le gc qui exécute cette méthode lorsqu'il fait un clean de ton objet et pas le contraire!


---------------
What is popular is not always right, what is right is not always popular :D
n°106153
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2002 à 16:20:29  profilanswer
 

est-ce-que qq'un a d'autres suggestions?

n°106180
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 28-02-2002 à 16:55:08  profilanswer
 

ca ne marche pas ce que je t'ai proposé ?


---------------
What is popular is not always right, what is right is not always popular :D
n°106212
rufo
Pas me confondre avec Lycos!
Posté le 28-02-2002 à 17:35:54  profilanswer
 

darklord22 a écrit a écrit :

ca ne marche pas ce que je t'ai proposé ?  




 
ben c'est pas évident de retrouver toutes les références...

n°106213
darklord22
Nightwish rulezzzzzzzzzzzzz
Posté le 28-02-2002 à 17:37:06  profilanswer
 

si t'as pas une bonne architecture  :sarcastic:  
 
Pour ton info, il n'y a pas d'autre solutions. Tant que ton image sera référencée par un des tes objets elle restera en mémoire, point final.


---------------
What is popular is not always right, what is right is not always popular :D
mood
Publicité
Posté le 28-02-2002 à 17:37:06  profilanswer
 

n°106413
matafan
Posté le 01-03-2002 à 00:41:46  profilanswer
 

N'appelle pas la méthode finalize() toi même. Le javadoc le dit d'ailleurs explicitement.
 
Par contres, tu peux la surcharger pour afficher un message du genre "*** FINALIZE ***", qui te permettra de vérifier si le garbage collectore finalize tes objets devenus inutiles. Si tu vois la RAM libre baisser sans qu'aucune image ne soit finalisée, c'est probablement que tu garde un référence à un endroit du code...

n°106460
rufo
Pas me confondre avec Lycos!
Posté le 01-03-2002 à 08:44:55  profilanswer
 

merci :) Je vais regarder ça...

n°106494
darklord
You're welcome
Posté le 01-03-2002 à 09:46:35  profilanswer
 

:heink:


---------------
Just because you feel good does not make you right
n°106495
darklord
You're welcome
Posté le 01-03-2002 à 09:47:44  profilanswer
 

au fait dans une applet Java tu sais voir la mémoire occupée et compagnie via la console. Tu peux aussi demander au GC de s'exécuter (à nouveau qd il l'a décidé).


---------------
Just because you feel good does not make you right
n°106569
petoulachi
A fortiori, brigadier chef
Posté le 01-03-2002 à 11:38:19  profilanswer
 

DarkLord a écrit a écrit :

au fait dans une applet Java tu sais voir la mémoire occupée et compagnie via la console. Tu peux aussi demander au GC de s'exécuter (à nouveau qd il l'a décidé).  




HA bon ? je pensais qu'en faisant system.gc() ça l'appelait explicitement notre cher garbage collector  :??:  
Mais alors c quoi l'interet, si il se lance quand yen a besoin ? autant pas mettre l'appel dans ce cas  :??:  :??:

n°106585
darklord
You're welcome
Posté le 01-03-2002 à 12:05:47  profilanswer
 

petoulachi a écrit a écrit :

 
Mais alors c quoi l'interet, si il se lance quand yen a besoin ? autant pas mettre l'appel dans ce cas  :??:  :??:  




 
public static void gc()
 
Runs the garbage collector.  
 
Calling the gc method suggests that the Java Virtual Machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the Java Virtual Machine has made a best effort to reclaim space from all discarded objects.  
 
 
--> Tu le pousses un peu à libérer de la mémoire mais il n'est pas dit qu'il le fera de suite après ton appel.

 

[jfdsdjhfuetppo]--Message édité par DarkLord--[/jfdsdjhfuetppo]


---------------
Just because you feel good does not make you right
n°106900
benou
Posté le 01-03-2002 à 23:08:20  profilanswer
 

en faite tu dis à la JVM de faire un gros effort pour peut-être, si ca dérange pas trop, lancer le garbage collector incéssament sous peut, dès qu'elle pourra. ;)

 

[jfdsdjhfuetppo]--Message édité par benou--[/jfdsdjhfuetppo]


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Java] Détruire une image

 

Sujets relatifs
[JAVA]: [Thread]: Comment relever plusieurs moniteurs lors d'un wait()[Java] Prob fichiers
[Java] Comment éxecuter une application .hlp[XML / Java] SAX Parser API needed !
couleur autour d'un lien imageJava : vous utilisez quel editeur ?
Bug Java très ralant (pour les utilisateur)[Java] Les Design Pattern et UML c'est quoi ?
[Java] 1 ptit renseignement SVPprogramation java sous XP??????ayez pitié d'un newbi
Plus de sujets relatifs à : [Java] Détruire une image


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR