L'intervieweur m'a posé la question aujourd'hui ... y a-t-il une réponse?
L'intervieweur m'a posé la question aujourd'hui ... y a-t-il une réponse?
Réponses:
System.GC.Collect()
force le garbage collector à s'exécuter. Ceci n'est pas recommandé mais peut être utilisé si des situations surviennent.
Il n'est pas recommandé d'appeler gc explicitement, mais si vous appelez
GC.Collect();
GC.WaitForPendingFinalizers();
Il appellera GC explicitement dans tout votre code, n'oubliez pas d'appeler GC.WaitForPendingFinalizers();
après GC.Collect()
.
WaitForPendingFinalizers
ne donne pas nécessairement de «meilleures performances»: il se bloque simplement jusqu'à ce que tous les objets de la file d'attente de finalisation aient été finalisés (objets qui auraient pu y être placés par votre appel précédent à Collect
). Si vous voulez que ces objets soient collectés, vous avez besoin d' un autre appel Collect
après l' appel WaitForPendingFinalizers
.
WaitForPendingFinalizers
?
GC.Collect()
de MDSN ,
Utilisez cette méthode pour essayer de récupérer toute la mémoire inaccessible.
Tous les objets, quelle que soit la durée de leur mémoire, sont considérés pour la collecte; cependant, les objets référencés dans le code managé ne sont pas collectés. Utilisez cette méthode pour forcer le système à essayer de récupérer la quantité maximale de mémoire disponible.
Gardez à l'esprit, cependant, que le garbage collector peut ne pas toujours nettoyer ce que vous attendez ...
Vous ne souhaitez pas forcer l'exécution du garbage collector.
Cependant, si jamais vous l'avez fait (à titre d'exercice purement académique, bien sûr):
GC.Collect()
Je pense que .Net Framework fait cela automatiquement mais juste au cas où. Tout d'abord, assurez-vous de sélectionner ce que vous souhaitez effacer, puis appelez le garbage collector:
randomClass object1 = new randomClass
...
...
// Give a null value to the code you want to delete
object1 = null;
// Then call the garbage collector to erase what you gave the null value
GC.Collect();
Je pense que c'est tout. J'espère aider quelqu'un.