Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans la plupart des cas, le ramasse-miettes peut déterminer le meilleur moment pour effectuer une collecte, et vous devez le laisser s’exécuter de manière autonome. Il existe de rares situations où une collection forcée peut améliorer les performances de votre application. Vous pouvez alors induire le garbage collection à l’aide de la méthode GC.Collect 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 ramassage de déchets, car cela peut réduire les performances si le collecteur de déchets essaye 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 collection GC
Vous pouvez utiliser l'une des surcharges de méthode GC.Collect qui incluent une valeur GCCollectionMode pour spécifier le comportement d'une collection forcée de la manière suivante.
valeur GCCollectionMode |
Descriptif |
|---|---|
| Default | Utilise le paramètre de collecte de déchets par défaut pour la version .NET actuellement exécutée. |
| Forced | Force l’exécution immédiate du garbage collection. Cela équivaut à appeler la surcharge GC.Collect(). 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 propriété GCSettings.LargeObjectHeapCompactionMode sur GCLargeObjectHeapCompactionMode.CompactOnce avant de forcer un garbage collection de blocage complet immédiat. |
| Optimized | Permet au garbage collector de déterminer si l’heure actuelle est optimale pour récupérer des objets. Le ramasse-miettes pourrait déterminer qu’un regroupement ne serait pas suffisamment productif pour être justifié, auquel cas il reviendra sans libérer des objets. |
Collections d’arrière-plan ou de blocage
Vous pouvez appeler la surcharge de méthode GC.Collect(Int32, GCCollectionMode, Boolean) pour spécifier si une collection induite bloque ou non. Le type de collection effectué dépend d’une combinaison des paramètres mode et blocking de la méthode.
mode est membre de l’énumération GCCollectionMode et blocking est une Boolean valeur. Le tableau suivant récapitule l’interaction des arguments mode et blocking.
mode |
blocking = true |
blocking = false |
|---|---|---|
| Forced ou Default | Une collection de blocage est exécuté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 collecte sera effectuée dès que possible. La méthode Collect(Int32, GCCollectionMode, Boolean) demande une collecte en arrière-plan, mais cela n’est pas garanti ; selon les circonstances, une collecte bloquante peut tout de même être effectuée. Si une collection d’arrière-plan est déjà en cours, la méthode retourne immédiatement une valeur. |
| Optimized | Une collecte bloquante peut être exécutée, selon l'état du récupérateur de mémoire et du paramètre generation. Le Garbage collector tente de fournir des performances optimales. |
Une collection de blocage peut être effectuée, en fonction de l’état du Garbage collector. La méthode Collect(Int32, GCCollectionMode, Boolean) demande une collecte en arrière-plan, mais cela n’est pas garanti ; selon les circonstances, une collecte bloquante peut tout de même ê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 une valeur. |