Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Dans la plupart des cas, le garbage collector peut déterminer le meilleur moment pour effectuer un regroupement, et vous devez le laisser s’exécuter indépendamment. Il existe de rares situations où une collection forcée peut améliorer les performances de votre application. Dans ces cas, vous pouvez induire un garbage collection à l’aide de la GC.Collect méthode pour forcer un garbage collection.
Utilisez la GC.Collect méthode lorsqu’il existe une réduction significative de la quantité de mémoire utilisée à un point spécifique dans le code de votre application. Par exemple, si votre application utilise une boîte de dialogue complexe qui comporte plusieurs contrôles, l’appel Collect lorsque la boîte de dialogue est fermée peut améliorer les performances en récupérant immédiatement la mémoire utilisée par la boîte de dialogue. Assurez-vous que votre application n’entraîne pas trop fréquemment le garbage collection, car cela peut réduire les performances si le garbage collector tente de récupérer des objets à des moments non optimaux. Vous pouvez fournir une GCCollectionMode.Optimized valeur d’énumération à la Collect méthode pour collecter uniquement lorsque la collecte serait productive, comme indiqué dans la section suivante.
Mode de collecte GC
Vous pouvez utiliser l’une des surcharges de GC.Collect méthode qui inclut une GCCollectionMode valeur pour spécifier le comportement d’une collection forcée comme suit.
valeur GCCollectionMode |
Descriptif |
|---|---|
| Default | Utilise le paramètre de garbage collection par défaut pour la version en cours d’exécution de .NET. |
| Forced | Force le garbage collection à se produire immédiatement. Cela équivaut à appeler la GC.Collect() surcharge. Il en résulte une collection de blocage complète de toutes les générations. Vous pouvez également compacter le tas d’objets volumineux en définissant la GCSettings.LargeObjectHeapCompactionMode propriété GCLargeObjectHeapCompactionMode.CompactOnce sur avant de forcer un garbage collection de blocage immédiat. |
| Optimized | Permet au garbage collector de déterminer si l’heure actuelle est optimale pour récupérer des objets. Le garbage collector pourrait déterminer qu’un regroupement ne serait pas suffisamment productif pour être justifié, auquel cas il retournera sans récupérer d’objets. |
Regroupements en arrière-plan ou bloquants
Vous pouvez appeler la surcharge de GC.Collect(Int32, GCCollectionMode, Boolean) méthode pour spécifier si une collection induite est bloquante ou non. Le type de collection effectué dépend d’une combinaison des paramètres et blocking des mode méthodes.
mode est membre de l’énumération GCCollectionMode et blocking est une Boolean valeur. Le tableau suivant récapitule l’interaction des arguments et blocking des mode arguments.
mode |
blocking = true |
blocking = false |
|---|---|---|
| Forced ou Default | Une collection bloquante est effectuée dès que possible. Si une collection en arrière-plan est en cours et que la génération est 0 ou 1, la Collect(Int32, GCCollectionMode, Boolean) méthode déclenche immédiatement une collection bloquante et retourne une fois la collection terminée. Si une collection d’arrière-plan est en cours et que le generation paramètre est 2, la méthode attend que la collection d’arrière-plan soit terminée, déclenche une collection de génération 2 bloquante, puis retourne. |
Une collection est effectuée dès que possible. La Collect(Int32, GCCollectionMode, Boolean) méthode demande une collection d’arrière-plan, mais elle n’est pas garantie ; selon les circonstances, une collection bloquante peut toujours être effectuée. Si une collection d’arrière-plan est déjà en cours, la méthode retourne immédiatement. |
| Optimized | Un regroupement bloquant peut être effectué, en fonction de l’état du garbage collector et du generation paramètre. Le garbage collector tente de fournir des performances optimales. |
Un regroupement peut être effectué, en fonction de l’état du garbage collector. La Collect(Int32, GCCollectionMode, Boolean) méthode demande une collection d’arrière-plan, mais elle n’est pas garantie ; selon les circonstances, une collection bloquante peut toujours être effectuée. Le garbage collector tente de fournir des performances optimales. Si une collection d’arrière-plan est déjà en cours, la méthode retourne immédiatement. |