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 :

out of memory / visualgc


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Par défaut out of memory / visualgc
    Bonjour,

    Voila, j'interviens sur un projet web sur lequel il y a un problème de mémoire.

    j'ai branché visualgc pour voir un peu comment ça se passe dans la jvm :



    Voici le résultat.

    En fait la partie old grossis, grossis, jusqu'à l'exception.

    Vous pouvez voir en haut à droite les paramètres actuels de la jvm en prod.

    Sauriez vous quelles sont les pistes à suivre pour résoudre ce genre de problèmes svp (options jvm, problèmes dans le code ...etc ... ) ?


    Un grand merci d'avance pour votre aide :-)

    Loïc

    PS -
    env technique :
    jdk 1.4, tomcat 4.1.31, win 2003 server (2Go de Ram)

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Il faut y aller par étape. Tout d'abord bien déterminer après quelle action la mémoire grossie. Tenter de trouver le code fautif à partir de cette action.
    Si ça ne marche toujours pas, supprimer un maximum de code jusqu'à ne plus avoir de problème de mémoire, puis ajouter les fonctionnalités une à une.
    Les fonctionnalités/modules/bout de code seront bouchonnés lorsqu'ils sont enlevés.
    C'est un travail long et pénible, bon courage
    L'essentiel est de savoir rester calme lorsque le coupable est identifié
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne pense pas que les options de la JVM puissent résoudre ton problème : si tu as une OutOfMemory cela signifie que le GC a tenté tout son possible pour libérer la mémoire...


    Ton application consomme trop !

    • Soit c'est "normal" car tu traites de très grosse quantité de données, et dans ce cas la seule solution serait d'augmenter le max-heap via -Xmx.
    • Soit comme cela semble être le cas, la mémoire grossi petit à petit au fur et à mesure de l'utilisation de l'application. C'est typique d'une application qui conserverait des références inutiles : le GC ne pouvant donc pas libérer les objets.


    Dans ce second cas il faut vérifier tous les éléments "static" (et dans le scope "application" pour une appli Web) :
    • Vérifier qu'il n'y ai pas de collections/maps en static qui accumulerait les références...
    • Vérifier qu'il n'y ai pas d'objet en static contenant de multiple référence...
    • Vérifier plus globalement que le scope de chaque variable/attribut est bien réduit au strict minimum (pas d'attribut d'instance utilisé comme variable locale, etc.)
    • ...




    Je ne connais pas visualgc, mais avec visualvm il y a un profiler bien sympa qui permet de voir l'occupation mémoire par type d'objet : si une de tes classes vient se hisser dans les premiers résultats tu as une piste pour ton problème (en général les premières places sont occupées par les classes standard et les tableaux).

    visualvm a obligatoirement besoin de Java 6 pour fonctionner, mais il semblerait qu'il puisse se connecter à n'importe quel application à partir de Java 1.4.2 (mais je n'ai pas testé).

    a++

  4. #4
    Membre expérimenté Avatar de sewatech
    Inscrit en
    Février 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Février 2007
    Messages : 141
    Par défaut
    Quel type de OutOfMemory as-tu : heap, perm space,... ?

    C'est marqué après le nom de l'exception.

    Alexis

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 91
    Par défaut
    Bonjour,

    Merci pour toutes vos réponses,

    -> dinobogan : Merci, du courage j'en ai besoin

    -> adiGuba : Merci , je vais installer visualVM pour voir si je peux affiner le ciblage pour trouver le coupable. Je pencherais aussi pour ta seconde proposition, à savoir un certain nombre de références inutiles qui empêche un bon GC. J'invertigue et vous tiens au courant

    -> Alexis : Merci , C'est un OutOfMemory heap ...


    Je vous tiens au courant de l'avancement,

    Merci

    @+

    Loïc

Discussions similaires

  1. [XStream][String]out of memory
    Par Invité dans le forum Persistance des données
    Réponses: 8
    Dernier message: 10/01/2006, 14h52
  2. [C++] [gcc] out of memory
    Par fxp17 dans le forum GCC
    Réponses: 5
    Dernier message: 06/01/2006, 10h29
  3. [pb mémoire] out of memory d'eclipse
    Par Casp dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/05/2005, 16h39
  4. Out of memory
    Par shurato dans le forum ANT
    Réponses: 1
    Dernier message: 10/11/2004, 16h19
  5. [JBuilder 8] Out of memory problem ...
    Par keros dans le forum JBuilder
    Réponses: 2
    Dernier message: 08/09/2003, 19h03

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