ludoW21
Messages postés16Date d'inscriptionlundi 22 mai 2006StatutMembreDernière intervention25 septembre 2007
-
17 oct. 2006 à 11:47
cs_httrack
Messages postés2Date d'inscriptionmardi 12 janvier 2010StatutMembreDernière intervention30 janvier 2011
-
25 janv. 2011 à 00:03
bonjour, je travaille sous Eclipse. Je n'arrive pas à ce que ma méthode finalize soit appelée... J'ai fait un simple test, et voici le code source... Quelqu'un peut-il m'aider?
package xxx;
public class Test
{
private int zero;
private boolean condition;
public static void main(String args[]){
Test test = new Test();
}
public Test()
{
zero = 0;
condition = false;
System.out.println("L'objet a été créé");
}
public void finalize() throws Throwable
{
System.out.println("Objet nettoyé de la mémoire");
}
}
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 17 oct. 2006 à 12:11
Salut
de mémoire, il me semble que c'est le garbage collector qui appelle cette méthode afin de "finalisé" un objet. Néanmoins, de mémoire aussi, il semble que cette méthode marche moyennement et il serait même déconseillé de l'utiliser !
Ce qui fait qu'il est plus sage de faire un tonObjet = null; et attendre que le garbage collector fasse son travail (ou el forcer en faisant System.gc();).
Twinuts
Messages postés5375Date d'inscriptiondimanche 4 mai 2003StatutModérateurDernière intervention14 juin 2023111 17 oct. 2006 à 12:27
Salut,
pour corriger tout le monde ce n'est pas le garbage collector qui appel la méthode finalize d'un objet mais le finalizer exemple :
Runtime.getRuntime().runFinalization();
voici un petit exemple pour clear la memoire de tes objets:
public void free() {
Runtime run = Runtime.getRuntime(); long usedMem1 usedMemory(), usedMem2 Long.MAX_VALUE;
for (int i = 0; (usedMem1 < usedMem2) && (i < 500); ++i) {
run.runFinalization();
run.gc();
Thread.yield();
usedMem2 = usedMem1;
usedMem1 = usedMemory();
}
}
------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."
rom1v
Messages postés29Date d'inscriptionlundi 20 décembre 2004StatutMembreDernière intervention21 septembre 2007 27 oct. 2006 à 20:30
Ca sert à rien d'essayer de supprimer les objets de la mémoire... Si ton objet n'est plus référencé, le garbage collector le supprimera tôt ou tard, au moment "optimal"...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_httrack
Messages postés2Date d'inscriptionmardi 12 janvier 2010StatutMembreDernière intervention30 janvier 2011 25 janv. 2011 à 00:03
Slt Juste pour etre sur que le ramasse miettes a vraiment appeler finalize() il faut(pour s'assurer pas obligé) appelé System.runFinalisation().
reference=null;
System.gc();
System.runFinalisation();