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

Résolu
gacki Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -  
gacki Messages postés 109 Date d'inscription   Statut Membre Dernière intervention   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
c'est exactement se que je cherchais merci beaucoup :D
0