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 :

HEAP Size et dépassement mémoire


Sujet :

Java

  1. #1
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Par défaut HEAP Size et dépassement mémoire
    Bonjour,

    J'administre un AIX faisant tourner plusieurs applis Web java.
    Une de ces applis cosomme régulièrement plus de 2Go de mémoire, ce qui n'est pas sans poser quelques problèmes.

    Le heap Size est configuré comme tel :
    -Xms128m -Xmx512m

    Ma question : est-il courant que le process lui-même dépasse amplement la taille du heap ? Comment est-ce possible ? Je sais que le Heap est l'espace qui permet la création et la manipulation des objets, le garbage collector devrait donc faire son boulot à partir de 512 Mo consommés non ?
    Est-ce du à un fonctionnement normal ou à une fuite mémoire ?

    Désolé si je suis un peu confus, je ne suis pas vraiment développeur

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Je ne connais pas ton appli, mais 2 GOs de mémoire, ce n'est vraiment pas courant!

    Donc je dirais fuite mémoire (ou très mauvaise gestion de celle-ci: gros objets gardés "en cache" en mémoire, etc.).
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Par défaut
    Merci pour l'info !

    Donc il est possible de creer des objets dont la taille dépasse au final la taille max du heap ? Et ce, sans erreurs ?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Par défaut
    Si je me trompe pas, tu ne peux pas dépasser la mémoire allouée à la Heap. Il s'agit de mémoire virtuelle, plus tu en as, et plus ton appli ira vite (car taper dans la mémoire RAM c'est beaucoup plus rapide).
    Donc si tu mets 1024 au lieu de 512 çà ira plus vite.

    Donc je pense pas que tu puisses créer des objets dont la taille dépasse 512. De toute façon faut y aller

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Salut,

    Le "heap" est une zone mémoire partagée commune à tous les threads; Cependant java alloue de la mémoire pour d'autres choses, notamment les "stack". Chaque thread possède son stack, qui en fait contient beaucoup de chose mais entre autres les données "locales" au thread.

    Donc à priori, je dirais que quelque part dans l'application en question, qui est probablement multithreadée, il y a une fuite mémoire. Il faut la monitorer avec un "Profiler" ( beaucoup existent, google te le dira )

    A+

  6. #6
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Par défaut
    je ne peux pas être catégorique pour la taille des objets...Moi je suppose que nous avons plutôt affaire à une multitude d'objets relativement petits.

    Le problème est que cette appli fonctionne avec Websphere et qu'elle est interfacée avec Broadvision. Il semble que certains objets C++ soient créés et manipulés par Broadvision via Java (ouais ca se compliqe ).
    Je suppose donc que la fuite est là : les objet java ne dépasserait réélement pas 512 Mo mais les objets C++ eux ne serait pas compris dans le heap, et là serait la fuite...
    On va voir avec l'éditeur de broadvision ce qu'il en dit. Wait & see...

    En tout cas merci pour vos réponses.

    [EDIT] Ok je vais voir pour ce Profiler ca pourra surement nous aider

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 116
    Par défaut
    Une solution simple qui permet de ne pas implementer une politique de gestion de cache, est l'utlisation des softReference. Je crois qu'il a un article dessus dans developpez.com.

Discussions similaires

  1. Problème Netbeans + JavaMail + Heap Size
    Par garth30 dans le forum NetBeans
    Réponses: 5
    Dernier message: 17/12/2007, 10h19
  2. Dépassement mémoire MappedByteBuffer
    Par iohack dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 07/12/2007, 16h29
  3. outOfMemory java heap size
    Par flora806 dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2007, 10h55
  4. outOfMemory Java heap size : cache configuration ?
    Par will82 dans le forum Hibernate
    Réponses: 4
    Dernier message: 23/08/2006, 11h47
  5. Analyseur code pour dépassement mémoire
    Par adrienj dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 13/07/2006, 21h53

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