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 :

String() vu sous l'aspect de mémoire


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 13
    Points
    13
    Par défaut String() vu sous l'aspect de mémoire
    Un objet String() est considéré comme un char[]. Dans le moment où je crée un object avec String s = new String(), quelle quantité de mémoire cela occupe?

    Et comme deuxième question il m'intéresserait si je peux considérer l'espace de mémoire d'un String, disons "hello", comme correspondant exactement à la mémoire occupée par 5 chars.

    Malencontreusement, je ne pouvais pas trouver une réponse à ces questions en lisant l'API.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur Java/Scala
    Inscrit en
    Octobre 2007
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Scala

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 086
    Points : 2 271
    Points
    2 271
    Par défaut
    Tu trouveras des réponses ici:
    http://www.javaworld.com/javaworld/j...26-sizeof.html

    Trouver la taille d'un objet Java est quelque chose d'assez compliqué.

    Comment ils expliquent ça dépend de si c'est en mémoire ou sous forme serialisée etc...
    Ca dépend aussi de ta JVM normalement (32 vs 64 bits). Car ton objet String tient une référence sur le char[].

    Tu peux avoir des détails sur l'espace mémoire consommé par des arrays ici:
    http://www.javamex.com/tutorials/mem...ry_usage.shtml



    Bref il n'y a pas de solution simple à ce problème et plusieurs projets opensource te proposent des approximations de la taille de ton objet.
    Par exemple: http://stackoverflow.com/a/52682/82609


    Il faut aussi savoir que ta JVM possède un pool de String qui fait que les littéraux ("xxx" et pas new String("xxx") ) sont réutilisés.

    On a donc:
    "xxx" == "xxx" -> true
    "xxx" == new String("xxx") -> false

    new String(...) ne met pas le String dans le pool et donc un nouvel objet est bel et bien créé.
    React-Hebdo - Newsletter pour se tenir à jour sur l'écosystème React

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 554
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 554
    Points : 21 613
    Points
    21 613
    Par défaut
    Citation Envoyé par twalebi Voir le message
    Un objet String() est considéré comme un char[]. Dans le moment où je crée un object avec String s = new String(), quelle quantité de mémoire cela occupe?
    Celle du char[], plus un peu de mémoire pour représenter deux objets (le char[] et la String qui s'en sert.)

    Citation Envoyé par twalebi Voir le message
    Et comme deuxième question il m'intéresserait si je peux considérer l'espace de mémoire d'un String, disons "hello", comme correspondant exactement à la mémoire occupée par 5 chars.
    Non. char[] et String sont deux objets et les objets ont besoin d'un peu de mémoire en plus de ce qu'ils contiennent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2013
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 10
    Points : 13
    Points
    13
    Par défaut
    Ok, merci pour les réponses!

Discussions similaires

  1. [AC-2010] String limitation sous Access
    Par GreatTeacherOnizuka dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/08/2014, 14h20
  2. Cube OLAP sous Excel - pb de mémoire
    Par sophie94 dans le forum SSAS
    Réponses: 0
    Dernier message: 17/01/2013, 15h11
  3. cryptage string & clé sous Compact Framework 3.5
    Par altahir007 dans le forum VB.NET
    Réponses: 4
    Dernier message: 26/04/2012, 11h16
  4. string dans un struc : allocation de mémoire ?
    Par wonderyan dans le forum C
    Réponses: 19
    Dernier message: 13/09/2007, 15h59
  5. Accéder à un espace mémoire sous XP
    Par keny dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 02/08/2002, 12h37

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