Deuxieme reference ? que se passe t'il ???

Résolu/Fermé
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 14 oct. 2013 à 02:19
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016 - 15 oct. 2013 à 22:59
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 ???
A voir également:

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
14 oct. 2013 à 08:10
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
gacki Messages postés 109 Date d'inscription mardi 23 avril 2013 Statut Membre Dernière intervention 15 mars 2016
Modifié par gacki le 15/10/2013 à 23:01
c'est exactement se que je cherchais merci beaucoup :D
0