Comment fonctionne le garbage collector ?

Comment fonctionne le garbage collector ? - Java - Programmation

Marsh Posté le 01-05-2006 à 16:36:14    

Techniquement parlant, comment il fonctionne ? À moins d'un timeout sur les objets, je ne vois pas comment ce processus peut "deviner" si un objet n'est plus uilisé.  [:chriscool007]  
 
Et si c'est un timeout c'est mal fait selon moi, car mon programmes pourrait bien utiliser un objet à un moment donné et utiliser cet objet de nouveau seulement au moment d'une action précise, alors le programme risquerait de planter, car le ramasse-miettes à déjà passé.  
 
 :hello:

Reply

Marsh Posté le 01-05-2006 à 16:36:14   

Reply

Marsh Posté le 01-05-2006 à 16:38:31    

C'est pas un time out :o
 
http://forum.hardware.fr/hardwaref [...] 3900-1.htm


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 01-05-2006 à 16:39:49    

(avec ça, tu cvas avoir de la lecture pour toute la semaine [:ddr555]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 24-05-2007 à 14:16:28    

Bonjour, j'ai une bête question sur le garbage collecteur :
 
Un vecteur uniquement référencé par lui même (donc un vecteur qu'on ne sait plus atteindre) sera t'il mangé par le garbage collector ?
 
Merci  :jap:

Reply

Marsh Posté le 24-05-2007 à 17:43:16    

Ben oui, pousquoi ne le serait-il pas? [:pingouino]
 
(c'est un cas trivial de référence circulaire, et tous les GC un tant soit peu modernes -- càd tous les GCs ayant moins de 50 ans grosso merdo -- sont capables de les gérer)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 17:51:07    

Slt tt le monde,
 
Voilà ce que je connais sur le GC :
 
pour chaque zone mémoire allouée, le gc compte le nombre de reférences vers cette zonne. et à chaque fois qu'il y une reference de plus le compteur est inscrémenté et il décrementé à chaque fois qu'il y a une reference de moins.
 
Et quand le compteur de references passe à zéro, la zone mémoire n'est plus pointée donc le gc peut récupérer la mémoire.
 
Merci à tous ! bonne aprem

Reply

Marsh Posté le 24-05-2007 à 18:21:50    

masklinn a écrit :

Ben oui, pousquoi ne le serait-il pas? [:pingouino]

 

(c'est un cas trivial de référence circulaire, et tous les GC un tant soit peu modernes -- càd tous les GCs ayant moins de 50 ans grosso merdo -- sont capables de les gérer)


Sauf les navigateurs web :o

 

Message cité 1 fois
Message édité par 0x90 le 24-05-2007 à 18:23:56

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 18:37:10    

0x90 a écrit :

Sauf les navigateurs web :o


Même eux, le problème de memleak d'IE n'est pas lié à un garbage collector unique mais au fait que dans IE les objets JS "vivent" dans le moteur JScript alors que les objets DOM vivent dans un moteur COM, et ont des wrappers JScript pour être accessible en JS.
 
Sauf que le moteur JScript a son GC, et que le moteur COM a le sien et qu'ils fonctionnent totalement séparément.
 
Chacun dans son coin n'a aucun problème à gérer les références circulaires, mais quand tu as une référence circulaire entre des objets JScript et des objets COM (par exemple dès que tu ajoutes des évènements -- en JScript -- sur un objet du DOM -- vivant dans le moteur COM), aucun moteur n'est capable de "voir" la circularité (le GC JScript voit une référence sur l'un de ses objets venant du moteur COM et le GC COM voit une référence sur l'un de ses objets venant du moteur JScript, mais ils n'ont pas la possibilité d'aller plus loin), et là paf memleak


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 18:41:57    

masklinn a écrit :

Même eux, le problème de memleak d'IE n'est pas lié à un garbage collector unique mais au fait que dans IE les objets JS "vivent" dans le moteur JScript alors que les objets DOM vivent dans un moteur COM, et ont des wrappers JScript pour être accessible en JS.
 
Sauf que le moteur JScript a son GC, et que le moteur COM a le sien et qu'ils fonctionnent totalement séparément.
 
Chacun dans son coin n'a aucun problème à gérer les références circulaires, mais quand tu as une référence circulaire entre des objets JScript et des objets COM (par exemple dès que tu ajoutes des évènements -- en JScript -- sur un objet du DOM -- vivant dans le moteur COM), aucun moteur n'est capable de "voir" la circularité (le GC JScript voit une référence sur l'un de ses objets venant du moteur COM et le GC COM voit une référence sur l'un de ses objets venant du moteur JScript, mais ils n'ont pas la possibilité d'aller plus loin), et là paf memleak


 
Je sais tout ça, mais le résultat est que dans un cas d'utilisation très commun la détection des refs circulaires marche pas [:spamafote]
 
( Et sinon python, ils ont arreté d'avoir des pb de ref circulaires aussi ? )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 18:50:36    

0x90 a écrit :

Je sais tout ça, mais le résultat est que dans un cas d'utilisation très commun la détection des refs circulaires marche pas [:spamafote]


Oui mais contrairement à ton sous-entendu ce n'est pas un problème lié à l'implémentation d'un GC, mais à l'interaction de deux GC différents [:spamafote]  

0x90 a écrit :

( Et sinon python, ils ont arreté d'avoir des pb de ref circulaires aussi ? )


Ca fait un moment


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 18:50:36   

Reply

Marsh Posté le 24-05-2007 à 18:52:35    

masklinn a écrit :

Oui mais contrairement à ton sous-entendu ce n'est pas un problème lié à l'implémentation d'un GC, mais à l'interaction de deux GC différents [:spamafote]  


Bah c'est un défaut de leur implémentation respective pourtant pas bien compliqué à résoudre [:spamafote]
 

masklinn a écrit :


Ca fait un moment


Chavais pas [:cupra]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 18:53:48    

0x90 a écrit :

Bah c'est un défaut de leur implémentation respective pourtant pas bien compliqué à résoudre [:spamafote]


Lol [:pingouino]

 

Il est pas compliqué à résoudre, faut juste réimplémenter tout le DOM dans le moteur JScript quoi, facile [:pingouino]

Message cité 1 fois
Message édité par masklinn le 24-05-2007 à 18:55:11

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 19:12:42    

masklinn a écrit :

Lol [:pingouino]
 
(tu m'expliques comment tu fais pour créer des graphes complets afin de détecter des cycles quand tes objets vivent dans des runtimes séparés et complètement différents?)


 
http://pix.nofrag.com/47/48/5ff02cc51c39ba75b9bb96b466fa.jpeg
 
[:spamafote]


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 19:25:11    


Ptin  c'est d'une clarté [:pingouino]

 

C'est fait avec Dia non? [:pingouino]

 

La fonction que tu appelles à l'étape 1, c'est une fonction jscript ou com?

 

Accessoirement, si c'était aussi simple ça aurait déjà été fait je pense [:pingouino]

 

Il y a des masses de problèmes qui peuvent se présenter, genre le fait que les deux engins ont des GCs aux stratégies complètement différentes, que je doute que l'interface COM spécifie la possibilité de faire interragir les moteurs de GCs, que le problème n'est pas qu'entre le JScript et le DOM mais aussi entre le JScript et le VBScript, entre le JScript et le CLR, entre le VBScript et le CLR, ...

Message cité 1 fois
Message édité par masklinn le 24-05-2007 à 19:30:59

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 19:30:05    

masklinn a écrit :

Ptin  c'est d'une clarté [:pingouino]
 
C'est fait avec Dia non? [:pingouino]
 
La fonction que tu appelles à l'étape 1, c'est une fonction jscript ou com?


 
Implémentée en COM (simple parcours du domaine d'objets COM jusqu'a cul de sac ou justement, arrivée sur un objet Jscript qui est renvoyé). et appelé par jscript.
 
Note que j'ai pris Jscript comme "maitre" dans l'illustration, mais suffit qu'un des deux l'implémente pour faire péter les cycles, et ça pourrait aussi bien être COM.
 
( c'est fait avec Inkscape :o )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 20:07:12    

0x90 a écrit :

Implémentée en COM (simple parcours du domaine d'objets COM jusqu'a cul de sac ou justement, arrivée sur un objet Jscript qui est renvoyé). et appelé par jscript.
 
Note que j'ai pris Jscript comme "maitre" dans l'illustration, mais suffit qu'un des deux l'implémente pour faire péter les cycles, et ça pourrait aussi bien être COM.


Ben ouais mais fonctionnellement ça implique de faire des modifs majeures au GC (rien que le fait de pouvoir ignorer des références entrantes...)

0x90 a écrit :


( c'est fait avec Inkscape :o )


Ben t'es franchement mauvais :o


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-05-2007 à 20:13:45    

masklinn a écrit :

Ben ouais mais fonctionnellement ça implique de faire des modifs majeures au GC (rien que le fait de pouvoir ignorer des références entrantes...)


Déja nettement moins que de réflechir tout le DOM dans jscript comme tu l'a initialement proposé :o
Si tu prends en compte la compétence supposée d'un mec à qui on demande de coder le GC d'un browser, coder la fonction du schéma dans le ptit wrapper COM-JS et faire la différence entre le multiset des fils de A et le multiset retourné par l'appel à cette fonction, c'est franchement pas grand chose [:spamafote]

masklinn a écrit :


Ben t'es franchement mauvais :o


T'es pas patron, t'as pas droit aux beaux slides :o


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 24-05-2007 à 20:37:32    

masklinn a écrit :

Ben oui, pousquoi ne le serait-il pas? [:pingouino]

 

Parceque le Gc a plus faim  ? :D  

 


Merci pour la réponse.
 :hello:


Message édité par Siron le 24-05-2007 à 20:39:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed