Deuxieme reference ? que se passe t'il ??? [Résolu/Fermé]

Signaler
Messages postés
109
Date d'inscription
mardi 23 avril 2013
Statut
Membre
Dernière intervention
15 mars 2016
-
Messages postés
109
Date d'inscription
mardi 23 avril 2013
Statut
Membre
Dernière intervention
15 mars 2016
-
salut tout le monde

j'ai une question concernant le suivant :

supposant que je fait une première référence :

Etudiant e = new Etudiant();
puis qu'on je fini de l'utiliser je fait une deuxième référence:

e = new Etudiant();

alors la que vas se passé pour le premier objet c-a-d la première référence ??
parce que par exemple en C si vous faite une allocation et vous la donner a un pointeur puis vous perder se dernier ... vous n'aurai pas la possibilité d'accédé a votre case mémoire et en plus de sa elle reste allouer pour le programme (donc perte de mémoire)
....... est ce que c'est exactement sa se qui se passe en java ???

1 réponse

Messages postés
16333
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
9 mai 2021
2 828
Si tu n'as plus aucune variable qui référence ton objet celui-ci est perdu, tu ne pourra plus y accéder (ce qui est souvent le cas pour les variables locales une fois la méthode terminée).
Cependant Java possède un mécanisme de récupération de la mémoire : le ramasse miettes. Lorsque tu as atteints la taille maximale de mémoire allouée à ton programme, Java appelle le Garbage Collector afin de supprimer de la mémoire tous les objets qui ne servent plus à rien.

Remarques :
1. Lorsque le Garbage Collector supprimes un objet, il appelle d'abord la méthode finalize() définie par la classe Object.
2. Tu peux appeler directement le garbage collector avec la commande System.gc(), cependant c'est une opération assez longue, donc pour des questions de performances il vaut mieux laisser Java l'appeler uniquement quand il faut.
3. Si à l'issue d'un garbage collecting, il n'y a plus aucune mémoire libérable, c'est à dire que tous les objets en mémoire sont encore utilisés. Alors tu te retrouves avec une OutOfMemoryError.
4. Il est parfois utile (dans le cas d'une longue méthode gourmande en mémoire) de mettre une variable à null dès qu'on en a plus besoin, afin d'autoriser le garbage collector à supprimer la mémoire l'objet concerné si le programme a besoin d'espace (par défaut la variable ne sera libérable qu'une fois la méthode terminé)
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
109
Date d'inscription
mardi 23 avril 2013
Statut
Membre
Dernière intervention
15 mars 2016

c'est exactement se que je cherchais merci beaucoup :D