Bien que je comprenne les sérieuses implications de jouer avec cette fonction (ou du moins c'est ce que je pense), je ne vois pas pourquoi cela devient l'une de ces choses que les programmeurs respectables n'utiliseraient jamais, même ceux qui ne le savent même pas. ce que ce est pour.
Disons que je développe une application où l'utilisation de la mémoire varie énormément en fonction de ce que fait l'utilisateur. Le cycle de vie de l'application peut être divisé en deux étapes principales: l'édition et le traitement en temps réel. Pendant la phase d'édition, supposons que des milliards, voire des billions d'objets soient créés; certains d'entre eux sont petits et d'autres pas, certains peuvent avoir des finaliseurs et d'autres pas, et supposent que leur durée de vie varie de quelques millisecondes à de longues heures. Ensuite, l'utilisateur décide de passer à l'étape en temps réel. À ce stade, supposons que la performance joue un rôle fondamental et que la moindre altération du déroulement du programme pourrait avoir des conséquences catastrophiques. La création d'objets est alors réduite au minimum possible en utilisant des pools d'objets et autres, mais ensuite, le GC intervient de manière inattendue et jette tout cela, et quelqu'un meurt.
La question: dans ce cas, ne serait-il pas judicieux d'appeler GC.Collect () avant d'entrer dans la deuxième étape?
Après tout, ces deux étapes ne se chevauchent jamais dans le temps et toutes les optimisations et statistiques que le GC aurait pu rassembler seraient ici de peu d'utilité ...
Remarque: comme certains d'entre vous l'ont souligné, .NET n'est peut-être pas la meilleure plate-forme pour une application comme celle-ci, mais cela dépasse le cadre de cette question. L'intention est de clarifier si un appel GC.Collect () peut améliorer le comportement / les performances globales d'une application ou non. Nous convenons tous que les circonstances dans lesquelles vous feriez une telle chose sont extrêmement rares, mais là encore, le GC essaie de deviner et le fait parfaitement bien la plupart du temps, mais il s'agit toujours de deviner.
Merci.