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 :

Calcul de l'espace occupé par une Collection


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut Calcul de l'espace occupé par une Collection
    Y a-t-il un moyen de prédire la quantité de mémoire occupée par une collection ? C'est pour faire un choix. Je ne sais pas si je dois arbitrer pour une HashMap, sachant qu'un nouvel objet est crée pour chaque couple [clé, valeur], ou bien si je dois plutôt m'orienter vers un tableau, quitte à écrire moi-même des algorithmes de recherche adaptés précisément à mon cas. Sachant que je pourrais me retrouver à terme avec un très grand nombre d'objets (des chaînes).

    [EDIT] J'arbitrerai plutôt entre une LinkedHashMap et un tableau

  2. #2
    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
    Par défaut
    À mon avis, c'est plus la taille des objets que tu ajoutes qui va prendre de la place plutôt que la structure de la Collection...
    Certes, HashMap sera bien sûr plus volumineux qu'un tableau, mais ça sera négligeable par rapport aux éléments insérés dedans...

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Ce sera pour faire quelque chose qui ressemblera à un graphe. Le nombre d'arcs augmentera plus vite que le nombre de sommets, d'autant que la JVM utilise un pool pour les chaînes.

  4. #4
    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
    Par défaut
    Citation Envoyé par had35
    d'autant que la JVM utilise un pool pour les chaînes.
    ??

    Tu peux expliquer stp?

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Ben la JVM ne construit pas tout à fait autant de chaînes qu'on le lui demande. Elle garde en mémoire celles qui ont été construites pour les "resservir" au lieu de reconstruire un nouvel objet. Je suppose que le détail du mécanisme est beaucoup plus complexe car il doit en plus être optimisé avec le compilateur. Mais pour faire simple, lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String chaine1 = "chaine";
    String chaine2 = "chaine";
    chaine1 et chaine2 sont en fait le même objet.

  6. #6
    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
    Par défaut
    Citation Envoyé par had35
    Ben la JVM ne construit pas tout à fait autant de chaînes qu'on le lui demande. Elle garde en mémoire celles qui ont été construites pour les "resservir" au lieu de reconstruire un nouvel objet. Je suppose que le détail du mécanisme est beaucoup plus complexe car il doit en plus être optimisé avec le compilateur. Mais pour faire simple, lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String chaine1 = "chaine";
    String chaine2 = "chaine";
    chaine1 et chaine2 sont en fait le même objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("chaine" == "chaine");
    Effectivement, cela renvoie true...

    Très étonnant, pourquoi est-ce qu'au débutant on n'arrête pas de répéter qu'il faut utiliser equals, si 2 chaînes qui sont égales sont le même objet?

    EDIT: C'est que lors d'une déclaration directe, car:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("chaine".substring(2,3) == "a");
    renvoie false

  7. #7
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Citation Envoyé par had35
    Ce sera pour faire quelque chose qui ressemblera à un graphe. Le nombre d'arcs augmentera plus vite que le nombre de sommets, d'autant que la JVM utilise un pool pour les chaînes.
    Juste pour info, il existe une API qui implemente de nombreuses structures de données, dont les graphes. Vas vers un tour dans la partie API Java de ce site, elle est referencé.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 194
    Par défaut
    Merci otsgd, je vais essayer ce que tu proposes.

    Merci aussi à benratti. Ma structure de données n'est pas tout à fait un graphe, mais je vais quand même jeter un coup d'oeil à ce que proposent les liens vers les apis existantes.

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

Discussions similaires

  1. Espace Memoire occupé par une table
    Par guigui76esi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/07/2008, 10h44
  2. Espace occupé par une partie d'une table
    Par besco dans le forum Administration
    Réponses: 1
    Dernier message: 24/10/2007, 16h00
  3. Gestion de l'espace occupé par une valeur null
    Par Oberown dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 01/08/2007, 14h03
  4. [ASA]Espace occupé par une Table
    Par madina dans le forum Sybase
    Réponses: 3
    Dernier message: 17/07/2006, 17h16
  5. Espace occupé par une table
    Par Mihaela dans le forum Oracle
    Réponses: 3
    Dernier message: 18/06/2006, 22h09

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