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 :

Récupérer tous les objects instancicés d'une classe quelconque


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Avril 2011
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Récupérer tous les objects instancicés d'une classe quelconque
    Bonjour

    Je cherche un moyen qui permet de récupérer tous les object instanciés d'une classe.
    Est ce que ça existe? j'ai pensé à ce que ça soit une méthode dans la classe Class, mais je n'ai rien trouvé.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pas directement en runtime, non. Il y a des moyens (par exemple en mode debug, ou profilage). Mais la question est pourquoi tu as ce besoin ?

    Si tu as besoin de ça dans le fonctionnement normal de ton programme, tu peux toujours t'arranger pour stocker les références des instances de ta classe dans un conteneur.

    Le type du conteneur dépend des spécificités de la classe, et de certaines conditions d'utilisation.

    Une WeakHashMap conservera que les instances qui n'ont pas été garbagées, ce qui permet de n'avoir un impact que sur la construction pour gérer le conteneur. Malheureusement, tu pourras y trouver des instances qui ne sont plus référencées, ou alors il faut imposer au code qui utilise ces instances en appelant une méthode release comme pour un pool.
    Attention, avec la WeakHashMap avec les classes mutables : il faudra utiliser comme clef un indentifiant unique (valeur et référence) non mutable (avec un AtomicInteger pour fabrique par exemple et new Integer(IDFACTORY.getAndIncrement())) à utiliser comme clef.

    On peut utiliser un simple Set si on a une méthode release (aussi faut-il qu'elle soit systématiquement appelée lorsque c'est nécessaire) et qu'aucune instance ne peut être égale à une autre (aux termes de hashCode() et equals()), sinon une List.

    En tout cas, c'est bien complexe et difficile de rendre sûr, et je ne vois pas de raison fonctionnellle d'avoir à le faire (les seules fois où j'en ai eu besoin, c'est en debug ou en profiling).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Pas grand chose d'autre à ajouter par rapport à ce joel.drigo.
    Si tu es seulement intéressé par l’empreinte mémoire, tu peux utiliser JVisualVM (fournit avec le jdk). Il te permet d'avoir le nombre d'instance d'une classe ou d'un type primitif et le pourcentage que cela représente par rapport au total.

    Cela est assez pratique pour avoir une idée d'où se trouve la plus grosse consommation mémoire rapidement.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par kolodz Voir le message
    JVisualVM (fournit avec le jdk).
    ou Java Mission Control...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    Avec Java 8
    Je ne suis pas mort, j'ai du travail !

Discussions similaires

  1. Couper tous les sons QSound depuis une classe d'options
    Par Alice23 dans le forum Débuter
    Réponses: 1
    Dernier message: 13/01/2012, 14h48
  2. Récupérer tous les attributs "id" d'une chaine
    Par Gedan dans le forum jQuery
    Réponses: 4
    Dernier message: 23/08/2011, 16h15
  3. Récupérer tous les points GPS suivant une distance
    Par megaloplex dans le forum SPARQL
    Réponses: 0
    Dernier message: 29/07/2011, 16h25
  4. Récupérer tous les composants posée sur une forme
    Par toutounesan dans le forum VB.NET
    Réponses: 10
    Dernier message: 20/06/2011, 18h08
  5. Réponses: 2
    Dernier message: 08/02/2007, 12h39

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