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

Java Discussion :

[debutant]Supprimer un objet instancié


Sujet :

Java

  1. #1
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut [debutant]Supprimer un objet instancié
    Bonsoir tout le monde !

    J'ai parcouru le forum et le site et j'ai pu remarqué qu'en Java on ne peut pas détruire un objet instancié avec une méthode comme en c++

    Le garbage collector s'occupe de tout.

    Mais j'ai un petit souci dans ma situation

    J'ai créé une classe robot que j'instancié sur un plateau. J'ai donc plusieurs objets robots sur mon plateau. J'ai également une classe robotTueur qui eux tuent les autres robots . Donc je dois faire en sorte que lorsqu'un robotTueur décide de tuer un autre robot , celui-ci soit détruit. Donc la j'ai bien besoin d'une méthode au moins pour détruire mon objet? Comment procède t-on dans ce cas là ?

    Merci pour vos réponses

  2. #2
    Membre habitué Avatar de yakanet
    Homme Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 164
    Points
    164
    Par défaut
    J'ai pas tout compris a ton histoire de robot, mais normalement en mettant ton instance de ton robot a null le garbage collector libere l'espace occupé par celui-ci.
    Si tu veux etre sur que ton GC passe, utilise un System.gc()

  3. #3
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Points : 128
    Points
    128
    Par défaut
    Si tu as tes robots dans une collections, tu retire ton robot tué de la collection tout simplement ... Une fois que l'objet n'est plus référencé le garbage collector s'occupera de tout

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Citation Envoyé par yakanet
    Si tu veux etre sur que ton GC passe, utilise un System.gc()
    Pas tout a fait... en fait c'est une indication a la JVM que ca serait bien si le GC pouvait s'activer et essayer de liberer de la memoire (si c'est possible). Mais :
    - le GC peut ne pas de declencher toute de suite.
    - le CG peut ne pas liberer cet objet tout de suite.
    - il peut carrement ne pas y avoir de GC sur certaines JVM. Ou le GC peut avoir ete desactive.

    Citation Envoyé par javadoc
    Runs the garbage collector. Calling this 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 virtual machine has made its best effort to recycle all discarded objects.
    mikedavem, comme il a ete dit il te faut simplement "nullifier" toutes les references a ton robot et retirer celui-ci de toute collection le contenant. Attention si tu as une thread associee a ton robot, essaie de l'arreter avant. Idem si tu as des resources natives ou des fichiers ouverts essaie de les fermer avant de "nullifier" ton robot. Dans ce cas ce n'est pas non-plus une mauvaise idee d'implementer une methode destroy(), die() ou killed() dans ton robot qui s'occupe de ca et que tu appelles quand ton robot est tue.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre émérite
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Points : 2 411
    Points
    2 411
    Par défaut
    Perso dans un de mes projets, j'avais des acteurs qui pouvaient "mourir", et j'ai fait une fonction remove() qui mettait un booleen a true (genre boolean mort).
    A chaque tour de jeu, je verifiais pour chaque acteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    si mort == true
      collection.remove(acteur)
    voila voila, j'espere avoir pu t'aider

    mavina
    Développeur Java / Flex à Shanghai, Chine
    mes publications
    Mon dernier tutoriel : Messages Quit IRC : explications

    La rubrique IRC recrute des redacteurs : contactez moi

    Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Ok , merci pour toutes vos précisions . J'ai fait un peu comme toi mavina . Si mort blabla.. Je pense que ca devrait aller . Dans mon programme , il n'est pas nécessaire que l'objet soit détruit finalement

  7. #7
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    De toute façon, tu t'en fiches qu'il soit viré de la mémoire ou pas... Ta seule préoccupation, c'est de savoir si il est mort ou pas, pas de savoir s'il est supprimer réellement de la ram... Donc comme ça a été dit plus haut, tu retire ton robot de la collection, et voilà
    Après, le gc gère correctement la mémoire, mais même sans gc, tu aurais juste une perte de place mémoire, ça n'empêcherait pas ton robot d'être considéré "mort"...

  8. #8
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    SAUF si son jeu consiste à tuer des espaces mémoires occupés par la JVM !!

    K

  9. #9
    Membre averti Avatar de Razgriz
    Profil pro
    Professeur / chercheur en informatique / mathématiques
    Inscrit en
    Avril 2006
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Professeur / chercheur en informatique / mathématiques

    Informations forums :
    Inscription : Avril 2006
    Messages : 391
    Points : 306
    Points
    306
    Par défaut
    un autre moyen simple de buter l'objet consiste tout simpleemnt à changer la cible de la variable qui le référencie. Cet objet n'étant pointé par aucune variable, il est impossible d'y accéder et le garbage collector va libérer les ressources mémoires...
    On a toujours besoin d'un plus bourrin que soi

    Oui il y a quelques bugs dans ma librairie de Sécurité, mais les classes postées ne sont pas celles de la dernière version, et j'ai la flemme de tout modifier. Je vous donnerai avec plaisir la dernière version du jar par mp.

  10. #10
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 481
    Points
    3 481
    Par défaut
    Citation Envoyé par Razgriz
    un autre moyen simple de buter l'objet consiste tout simpleemnt à changer la cible de la variable qui le référencie. Cet objet n'étant pointé par aucune variable, il est impossible d'y accéder et le garbage collector va libérer les ressources mémoires...
    mettre l'objet à null revient au même
    K

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] Faire un objet redimensionnable
    Par deboll_s dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 04/07/2005, 21h18
  2. [debutant]supprimer image
    Par F.F. dans le forum C++Builder
    Réponses: 6
    Dernier message: 09/07/2004, 10h24
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [JSP][Debutant]recuperer un objet d'une page a l'autre
    Par zozolh2 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 17/05/2004, 10h25
  5. [API] Supprimer un objet
    Par Halleck dans le forum Windows
    Réponses: 11
    Dernier message: 10/04/2004, 01h34

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