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

Collection et Stream Java Discussion :

question dans garbage collection


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 27
    Points : 28
    Points
    28
    Par défaut question dans garbage collection
    bonjour

    moi j'apprends java depuis 3 moins. je voudrais savoir quelque choose concernant de garbage collection. quand je type


    .....
    int i=5;
    ....
    Class myclass = new Class();
    .....
    system.gc();
    }
    //system.gc();qu'il fait dans mon programme

    expliquez moi svp

    heap et stack mémory?

    merci

  2. #2
    Membre régulier Avatar de nabodix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 93
    Points : 115
    Points
    115
    Par défaut
    La pile(stack) et le tas(heap) sont deux "zone" de ta mémoire qui ne sont pas géré de la même façon.. (je te conseille de chercher plus d'info la dessus et de ne pas te contenter des simplifications que je vais faire, surtout que je dis cela de tête et qu'il est très probable que ce ne soit pas rigoureusement exact!) ..

    La pile est une partie de la mémoire très restreinte en possibilités.. Elle grandira en fonction de l'exécution de ton programme (des appel de méthodes, ect).
    C'est là que sera enregistré les types primitif (tel que ton int i=5) et la référence de tes Objets (c'est à dire le nombre qui représentera l'adresse mémoire de ton Objet en lui même)..

    Les Objets en eux-même seront enregistré dans l'autre partie de ta mémoire: le tas (heap).
    Dans cette partie de mémoire, on est beaucoup plus libre, mais elle sera également plus désordonné.. Et c'est le "garbage collector" qui se chargera de sa gestion (et une bonne gestion est primordial pour l'efficacité de ton programme)..

    Le garbage collector se chargera d'effacer les données se trouvant dans le tas dont il n'existe plus de liens (dans la pile) menant vers elles.
    L'exécution de System.gc() aura pour effet de forcer le garbage collector de re-vérifier la mémoire (mais c'est à éviter! 'Vaut mieux laisser Java s'occuper de tt cela )

    Voilà, très brièvement



    Mais il y a surement plein de choses intéressante à ajouter... (et t'inquiète pas; si j'ai dis une grosse erreur, on ne manquera pas de me le faire remarquer (surtout si Frédéric passe par ici ))..

    De toutes façons, il n'est pas compliqué de trouver sur le web plus d'informations à propos de la gestion de la mémoire.. (et ainsi de ne pas te contenter que d'une seule source..)

    Bon amusement..

  3. #3
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Tu trouveras quelques liens sur la gestion de la mémoire dans le JVM sur cette discussion précédente.

    J'ajouterais une petite précision à la réponse (pertinente) de nabodix : Systen.gc(); est non seulement mal, mais en plus sans garantie. En effet, l'argument -XX:-DisableExplicitGC le rend inopérant.

    Généralement, on considère que dans une application qui fonctionne coté client, donc avec 1 seul utilisateur, Systen.gc() ne pose pas de problème, mais sur une application JavaEE, ça peut être catastrophique et mener au blocage de tous les utilisateurs pendant plusieurs secondes, voire des dizaines de secondes.

  4. #4
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par hasalex Voir le message
    Généralement, on considère que dans une application qui fonctionne coté client, donc avec 1 seul utilisateur, Systen.gc() ne pose pas de problème
    Même dans une application client cela peut poser de gros problème de performance car l'appel inutile au GC est couteux.

    Un exemple des problème que cela peut engendrer : Difference de performances Unix/Windows d'un programme?

    a++

  5. #5
    Membre éprouvé
    Avatar de hasalex
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 879
    Points : 1 269
    Points
    1 269
    Par défaut
    Oh le beau cas ! Je le citerai en exemple...

    Merci pour le lien.

Discussions similaires

  1. [VB.NET] Suppression d'objets dans une collection
    Par master56 dans le forum VB.NET
    Réponses: 7
    Dernier message: 03/06/2010, 21h46
  2. Réponses: 13
    Dernier message: 25/01/2006, 12h02
  3. [PL/SQL] Charger une table dans une collection
    Par nosnoss dans le forum Oracle
    Réponses: 10
    Dernier message: 03/03/2005, 17h56
  4. Controle dans une collection
    Par rolototo dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 07/02/2005, 14h12

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