• [^] # Re: la réponse est évidente

    Posté par . En réponse au journal [Trolldi] Le langage plus approprié pour écrire des applications graphiques multiplateformes. Évalué à 4.

    J'avais raté son message et je ne peux que te seconder dans le fait qu'il raconte un peu n'importe quoi sur ce point là.

    Le seul cas où un passage à null pourrait changer quelque chose c'est un objet à vie courte dans la young gen qui serait tenu par un objet dans la old gen en attente d'être garbagé. En gros tu viens de créer un objet que tu passes en référence à un veille objet qui va mourir). En pratique j'ai pas souvenir d'un seul problématique comme cas comme ça. Ça ne veut pas dire que ça n'arrive pas, mais que ça pose pas de problème, faire un GC de la old gen ca n'a rien d'un problème.

    sachant qu'il fonctionne surtout par generation, et qu'il va donc parcourir toute la heap appartenant a une generation.

    Plus que ça. Pour pouvoir collecter la young gen tu as besoin de parcourir aussi toute la old gen pour trouver les références rentrantes vers tes nouveaux objets. En pratique c'est optimisé avec des dirty cards qui sont utilisé comme des write-barriers pour ne parcourir que les pages qui ont été modifiés depuis la dernière collection plutôt que toute la old gen.

    Si tu veux voir un peu comment fonctionne réellement les collections de young gen chez Hotspot je te conseil d'aller faire un tour chez Alexey Ragozin. Il a fait pleins de bons articles sur le fonctionnement du CMS et ca doit être un des derniers à comprendre comment il fonctionne en détail vu que les devs se sont tirés de chez Oracle... Les talks de Gil Tene sont pas mal aussi.