La meilleure pratique est de ne pas forcer une collecte des ordures dans la plupart des cas. (Chaque système, j'ai travaillé sur de qui avait forcé la collecte des poubelles, avait en soulignant les problèmes qui, si elle est résolue aurait supprimé le besoin de forcé la collecte des ordures, et accéléré le système grandement.)
Il y a quelques cas, lorsque vous en savoir plus sur l'utilisation de la mémoire alors que le garbage collector. C'est peu probable dans un multi-utilisateur de l'application ou un service qui répond à plus d'une demande à la fois.
Toutefois, dans certains de lot type de traitement que vous en connaissez plus que le GC. E. g. imaginez une application.
- Est donné une liste de noms de fichier sur la ligne de commande
- Processus un seul fichier puis envoyer le résultat vers un fichier de résultats.
- Pendant le traitement du fichier, crée beaucoup de l'interdépendance des objets qui ne peuvent pas être collectées jusqu'à ce que le traitement du dossier complet (par exemple, un arbre d'analyse)
-
Ne gardez pas de correspondance entre les fichiers qu'il a traitées.
Vous pouvez être en mesure de faire une affaire (après mûre) les tests que vous devez forcer un plein de collecte des ordures après avoir traiter chaque fichier.
Un autre cas est un service qui se réveille toutes les quelques minutes pour traiter de certains éléments, et de ne pas garder en l'état pendant qu'il est endormi. Alors forcement une collection complète juste avant d'aller dormir peut être utile.
Le seul moment où je considère forcer
une collection, c'est quand je sais que beaucoup
de l'objet a été créé récemment
et très peu d'objets sont actuellement
référencé.
Je préférerais avoir un garbage collection API quand j'ai pu lui donner des conseils sur ce type de chose, sans avoir à forcer un GC mon auto.
Voir aussi "Rico Mariani Performances de Tidbits"