IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[ finalize() ] finaliseurs


Sujet :

Langage Java

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 229
    Points : 90
    Points
    90
    Par défaut [ finalize() ] finaliseurs
    Bonjour,

    Quelles sont les bonnes pratique pour l'utilisation du finaliseurs?






    Merci
    hocine

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    finalize() est surtout surchargée pour libérer des objets qui ne le seraient pas automatiquement lors du passage du ramasse miettes (handle de fichiers, polices de caractères...). Ça permet de faire les dernières opérations avant que l'objet ne soit complètement détruit.

  3. #3
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    99.99% du temps tu n'en as pas besoin.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 68
    Points : 62
    Points
    62
    Par défaut
    Bonsoir,

    je souhaitais juste ajouter ceci : surcharger la méthode finalize est une mauvaise pratique car vous ne pouvez pas savoir à quel moment il sera appelé.

    Il vaut mieux écrire une méthode dispose() vous-même et que vous appelerez vous-même. Swing emploie ce procédé (méthode dispose() sur les JFrame) tout comme les classes InputStream et OutputStream (méthode close()).

    Voici ce que dit Joshua Bloch (expert chez Sun) dans Effective Java : "Un finaliseur est imprédictible, la plupart du temps dangereux et certainement inutile. Son utilisation peut provoquer des irrégularités, de mauvaises performances et des problèmes de portabilité."

    Bonne soirée.

    Coyote

  5. #5
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    La mauvaise compréhension est que finalize ne détruit pas l'objet ! Cette méthode est appelée lors de sa destruction par le GC. En aucun cas il ne faut l'appeler directement croyant que ça va détruire l'objet.
    Java n'est pas C++ ! C'est la JVM qui gère tout ça.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

Discussions similaires

  1. Java EE 5 en version finale
    Par Petrus dans le forum Java EE
    Réponses: 12
    Dernier message: 13/05/2006, 16h01
  2. A la recherche d'un exemple complet MCD et script final
    Par Loowann dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 03/03/2005, 09h51
  3. Problèmes avec les variables final
    Par casolaro dans le forum Langage
    Réponses: 7
    Dernier message: 09/12/2004, 14h29
  4. [débutant]portabilité de l'exe final
    Par vvidal80 dans le forum MFC
    Réponses: 8
    Dernier message: 07/01/2004, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo