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

 


Dernière réponse
Sujet : [Java] Détruire une image
benou 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]


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
benou 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]

darklord

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]

petoulachi

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  :??:  :??:

darklord 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é).
darklord :heink:
rufo merci :) Je vais regarder ça...
matafan 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...
darklord22 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.
rufo

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...

darklord22 ca ne marche pas ce que je t'ai proposé ?
rufo est-ce-que qq'un a d'autres suggestions?
darklord22

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!

rufo 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.
darklord22

jupiler a écrit a écrit :

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




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

darklord22 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.
jupiler tu peux appeler la méthode finalize() de l'objet
rufo 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.

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