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 :

Gestion de mémoire dans Java ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut Gestion de mémoire dans Java ?
    Bonjour,

    Quelqu'un pourrai t'il m'expliquer comment on peut gerer la mémoire dans java en évitant les fuites (de mémoire) ? J'essai désespérement de faire des recherches dans la FAQ mais je pense que je n'utilise pas les bon mots clés du coup je tourne en rond

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Java gère tout seul la liberation de la memoire. C'est a dire que lorsqu'un objet n'est plus referencé, il est automatique désalloué.

    Les fuites mémoires existent si tu gardes indéfiniment une reference sur un objet

    Les mots clé sont garbagge collector (ou ramasse miettes).

  3. #3
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    je viens de regarder ce qu'en dit la FAQ et voici ce que j'ai trouvé:

    Il existe néanmoins la fonction gc de la classe java.lang.System qui permet de faire un appel explicite au garbage collector. Cet appel ne garantit pas que tous les objets inutiles seront supprimés de la mémoire.
    J'ai compris que certain code peuvent bloquer gc dans son execution (enfin c'est ce que j'ai compris de l'explication de mon tuteur de stage XD)... Quelqu'un aurai t'il une doc expliquant comment gc fonctionne afin que je puisse adapter mes programmes pour faciliter son execution ?

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par nayah Voir le message
    J'ai compris que certain code peuvent bloquer gc dans son execution... Quelqu'un aurai t'il une doc expliquant comment gc fonctionne afin que je puisse adapter mes programmes pour faciliter son execution ?
    Il ne faut pas utiliser la méthode System.gc(). Le Garbage Collector se débrouille très bien tout seul. Ce à quoi il faut faire attention est de ne pas ouvrir des fichiers trop gros entièrement dans la mémoire ou alors d'instancier des objets dans des boucles longues.

    C'est assez rare d'avoir des problèmes de mémoire sur un programme Java. C'est quoi ton problème exactement ? Tu utilises trop de mémoire ?

  5. #5
    Membre émérite

    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2007
    Messages : 510
    Par défaut
    En réalité je suis en ce moment en autoformation dans ma boite et on m'a demander de me pencher en particulier sur la gestion de mémoire... Les programmes que je vais avoir a développer dans les mois a venir sont des programmes destinés a fonctionner jours et nuits et d'aprés ce que mon tuteur m'a expliqué il fait que je métrise tout ca parce que la moindre fuite peut avoir pas mal de conséquences...

    En bref je n'ai pas de probleme particulier mais je cherche un maximum de documentation pour comprendre comment gc fonctionne (meme si je l'appelle pas c'est juste pour qu'il soit optimisé au maximum).

    merci pour le lien sanguko il a l'air assez complet je m'y met de suite

    merci encore

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    C'est assez rare d'avoir des problèmes de mémoire sur un programme Java
    Ca, c'est la théorie.
    En pratique, il arrive de trouver des projets en entreprise avec des fuites mémoires.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Tu peux confronter à 2 types de problèmes :
    - les pics mémoires
    - l'augmentation de la mémoire consommée

    Les pics mémoires peuvent se produire lorsqu'une opération crée beaucoup d'objets, des objets gourmands en mémoire (comme des images ou des gros fichiers), etc...

    La consommation mémoire peut augmenter avec le temps si tu gardes des références vers des objets. Typiquement, il faut être conscient que les attributs static, s'ils ne sont pas mis à null, ne vont pas être libérés. Si tu as des listes static, il faut faire attention à limiter le nombre d'éléments, voir à les vider de temps en temps.

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Les problemes de garbage collector sont assez subtiles, et si la libération de mémoire en java est quelque chose de nouveau pour toi, il est sans aucun doute trop tot pour chercher à optimiser quoique ce soit. La stratégie de libération mémoire du systeme repond à la tres grande majorité des besoins.


    Tu peux lire cet article. C'est tres interessant.

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

Discussions similaires

  1. Détection de faille mémoires dans un programme java
    Par stacre dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 09/02/2009, 12h10
  2. Gestion des droits dans une application Java
    Par Donaldo dans le forum Langage
    Réponses: 10
    Dernier message: 14/02/2008, 18h15
  3. Réponses: 13
    Dernier message: 14/02/2008, 13h27
  4. Réponses: 19
    Dernier message: 04/10/2006, 16h53
  5. Gestion de Mémoire Java
    Par lebulls dans le forum Langage
    Réponses: 5
    Dernier message: 18/07/2006, 10h35

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