Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1011 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Comment fonctionne le garbage collector ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment fonctionne le garbage collector ?

n°1357238
AppleII
Posté le 01-05-2006 à 16:36:14  profilanswer
 

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:

mood
Publicité
Posté le 01-05-2006 à 16:36:14  profilanswer
 

n°1357240
kadreg
profil: Utilisateur
Posté le 01-05-2006 à 16:38:31  profilanswer
 

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 !
n°1357242
kadreg
profil: Utilisateur
Posté le 01-05-2006 à 16:39:49  profilanswer
 

(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 !
n°1564590
Siron
Posté le 24-05-2007 à 14:16:28  profilanswer
 

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:

n°1564765
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 17:43:16  profilanswer
 

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
n°1564772
asirem
Posté le 24-05-2007 à 17:51:07  profilanswer
 

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

n°1564796
0x90
Posté le 24-05-2007 à 18:21:50  profilanswer
 

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.
n°1564812
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 18:37:10  profilanswer
 

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
n°1564815
0x90
Posté le 24-05-2007 à 18:41:57  profilanswer
 

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.
n°1564822
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 18:50:36  profilanswer
 

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
mood
Publicité
Posté le 24-05-2007 à 18:50:36  profilanswer
 

n°1564823
0x90
Posté le 24-05-2007 à 18:52:35  profilanswer
 

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.
n°1564824
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 18:53:48  profilanswer
 

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
n°1564826
0x90
Posté le 24-05-2007 à 19:12:42  profilanswer
 

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.
n°1564828
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 19:25:11  profilanswer
 


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
n°1564830
0x90
Posté le 24-05-2007 à 19:30:05  profilanswer
 

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.
n°1564851
masklinn
í dag viðrar vel til loftárása
Posté le 24-05-2007 à 20:07:12  profilanswer
 

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
n°1564857
0x90
Posté le 24-05-2007 à 20:13:45  profilanswer
 

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.
n°1564881
Siron
Posté le 24-05-2007 à 20:37:32  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Comment fonctionne le garbage collector ?

 

Sujets relatifs
Variable de session qui ne fonctionne pas avec wamp5- TinyMCE > Fonctionne en localhost pas en ligne
balise <li> ne fonctionne pasPourquoi les macros d'un Excel intégré dans Word ne fonctionne pas?
Comment fonctionne cette fonction "port_b_pullups (value)"Ça ne fonctionne pas : $type = '_GET'; $$type['mavar']; Normal ?
[c#][DirectX] DrawIndexedPrimitives() qui ne fonctionne pas[Corba + Eclipse] import org.omg qui fonctionne pas
Un simple lien qui ne fonctionne pas toujours[resolu] Plugin Visual Editor ne fonctionne pas.
Plus de sujets relatifs à : Comment fonctionne le garbage collector ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR