décrementation de variables statique à la destruction

décrementation de variables statique à la destruction - Java - Programmation

Marsh Posté le 15-02-2005 à 13:54:41    

Bonjour,
 
Je voulais faire un compteur d'instance d'objet. En C++ c'est faisable aisément au destructeur
 
~Myobj() { cpt-- ; }
 
Cela dit, j'ai entendu dire que  

  • Les destructeurs n'existent pas en Java
  • finalize() ne peut être appelé explicitement
  • system.GC ne fonctionne que quand bon lui semble  


Existe-t-il donc une solution propre ?
 
Merci


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 15-02-2005 à 13:54:41   

Reply

Marsh Posté le 15-02-2005 à 13:59:23    

si c'est un compteur exact, il te faut ajouter une méthode destroy() ou close() explicitement à tes objets.
 
Si c'est pour surveiller la consomation mémoire, mets le décrément dans finalize() synchronized.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 15-02-2005 à 14:04:46    

:jap:


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 15-02-2005 à 15:27:50    

nraynaud, pkoi synchronized ? le GC est multithreadé ?
 
edit : d'ailleur quand tu dis sychronzed, tu veux synchronizer sur quel objet ? parce que sur l'instance ca a pas de sens si ce qu'il faut modifier c'est une variable static ... synchronized sur la classe de l'objet ?


Message édité par benou le 15-02-2005 à 15:29:13

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

Marsh Posté le 15-02-2005 à 17:16:04    

le finalize est exécuté depuis son propre thread.
 
synchronisé sur this.getClass() (mais en fait, ce doivent être les méthodes statiques de comptage/décomptage qui doivent être synchronisées).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 15-02-2005 à 17:19:47    

qu'est ce que tu veux dire par "depuis son propore thread" ? son propre thread à qui ? quel thread ? pas celui du GC ?


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

Marsh Posté le 15-02-2005 à 17:25:35    

le thread d'exécution des fonctions finalize.
 
on l'appelle le "finalization thread" c'est un thread très méchant, on a quasiment jamais revu les objets qui ont eu affaire à lui, seul quelques survivants on pu en réchapper, il parraît qu'il ont reçu de ce réchappement le statut de demi-dieux, et que le méchant thread ne les embêtera plus jamais.
 
Mais tout ça c'est des rumeurs, moi je suis caché, j'ai ma fonction stop() toute prête, il parraît qu'il faut pas lui faire confiance, mais j'y crois ...
 
 
[ce message est la dernière trace de cet objet vivant]


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 15-02-2005 à 17:33:14    

oki [:dawa]
 
merci pour les précisions :jap:


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

Sujets relatifs:

Leave a Replay

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