ramasse miette - Programmation
Marsh Posté le 22-03-2001 à 16:08:31
C'est facile, java enregistre toutes les allocations mémoires que tu fais. Régulièrement en cours d'éxécution il se déclenche et vérifie que les liens sont bons (variable déclarée, bloc mémoire alloué). Si ça n'est pas le cas il vide les blocs mémoires associés.
En principe tu dois pouvoir forcer le garbage collector en affectant à null des objets. A son prochain passage il fera le ménage.
Marsh Posté le 22-03-2001 à 16:59:12
Comme le dit si bien Toxin, la machine virtuelle utilise des pointeurs "intelligents" avec compteur de référence intégré. Au passage du Garbage Collector les emplacements mémoire marqués comme plus référencés sont vidés et à nouveau disponibles.
Marsh Posté le 22-03-2001 à 17:11:12
Et dire que je ne code même pas en Java
C'est bô les souvenirs de doc lues il y a 3 ans
Marsh Posté le 22-03-2001 à 17:53:26
lulu77fr a écrit a écrit : la garbage collector peut-il faire planter java.exe ? |
Normalement non, mais comme chacun sait on vit dans the real world
Marsh Posté le 22-03-2001 à 18:56:54
Non. J'utilise Java intensivement et c'est quelque chose que je n'ai jamais observé.
Par contre, mon équipe de développement a détecté un bug dans le GC (le "glaneur de cellules" ) de la dernière version de HotSpot.
Quand on a 2 weak references sur 2 objets O1 et O2, et que O1 pointe sur O2, il arrive de temps en temps (observé 2 fois sur 500 000 avec un test intensif) qu'O2 soit garbagé alors qu'O1 ne l'est pas encore. Si, pour une raison ou pour une autre, on accède alors à O1, on peut essayer d'atteindre un objet théoriquement atteignable (O2) mais déjà supprimé par le GC...
Marsh Posté le 22-03-2001 à 16:01:23
quelqu'un pourrait m'expliquer le principe de fonctionnement du ramasse miette de java?