28 votes

Qu'est-ce que le serveur de collecte des ordures en ASP.NET Core?

J'ai mis à jour un ASP.NET projet de Base de VS2017 et la nouvelle csproj, et il y a cette option:

<PropertyGroup>
    <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>

Qu'est-ce que le serveur de collecte des ordures? Il n'y a pas de documentation appropriée, juste un guide de migration qui suppose que vous savez déjà ce que c'est.

(Sauf si il y a une doc officielle, auquel cas, s'il vous plaît laissez-moi savoir.)


Résumé: Il n'y a pas de détails dans les docs pour beaucoup de la technologie sous-jacente, malheureusement. Toutefois @PanagiotisKanavos lien a peu à propos de "serveur gc" ici.

17voto

Christopher Points 56

Il semble être la différence entre le Normal (poste de travail) et Simultanées (Serveur) Collecte des Ordures stratégies. Fondamentalement, la station de travail approche heurte à des problèmes dans de nombreux cas extrêmes. Et massivement Multithread scénarios (comme ASP Serveurs) sont des exemples typiques de tels cas le plus extrême:

https://social.msdn.microsoft.com/Forums/en-US/286d8c7f-87ca-46b9-9608-2b559d7dc79f/garbage-collection-pros-and-limits?forum=csharpgeneral

Notez que la GC a des problèmes avec les références faibles et la défragmentation, mais si cela s'applique à l' .NET, Base de la mise en œuvre est au delà de mes connaissances. Il y a toutes sortes d'améliorations, le .NET Noyau de l'équipe pourrait faire pour le code et ce qui se passe dans le domaine de la conception d'un GC gestionnaire de mémoire.

Peut-être qu'il ne définit le nombre de threads simultanés seront utilisés pour le marquage de la partie (avec le poste de travail par défaut étant 1). Il peut également inclure certains, modification de l'allocation de la mémoire des stratégies pour éviter les problèmes comme la défragmentation. Dans les deux cas, la perception sera par nature, doivent exécuter single-threaded, mettre un terme à tous les threads gérés et sera limitée par la vitesse de la mémoire, pas la vitesse du PROCESSEUR.

9voto

wels1200 Points 61

la documentation msdn...

https://msdn.microsoft.com/en-us/library/ms229357(v=vs. 110).aspx

Le common language runtime (CLR) prend en charge deux types de collecte des ordures: poste de travail de collecte des ordures, qui est disponible sur tous les systèmes, et le serveur de collecte des ordures, qui est disponible sur les systèmes multiprocesseurs. Vous utilisez l'élément à contrôler le type de collecte des ordures de la CLR effectue. Utiliser le GCSettings.IsServerGC propriété pour déterminer si le serveur de collecte des ordures est activé. Pour les ordinateurs seul processeur, la valeur par défaut de la station de travail de collecte des ordures doit être l'option la plus rapide. Workstation ou server peut être utilisé pour les deux ordinateurs multiprocesseurs. Serveur de collecte des ordures doit être l'option la plus rapide pour plus de deux processeurs. Cet élément peut être utilisé uniquement dans le fichier de configuration d'application; elle est ignorée si elle est dans le fichier de configuration de machine.

5voto

David Pine Points 1964

Lors de la migration, l' ServerGarbageCollection cartes de l' System.GC.Server.

<PropertyGroup>
  <ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>

Qu'est-ce que le serveur de collecte des ordures?

Tout simplement, c'est une valeur de configuration qui indique à l' .net runtime pour effectuer le serveur de collecte des ordures. Historiquement, cela a été géré par l' project.json. Il active/désactive le serveur de collecte des ordures.

C'est le rapprochant d'un document officiel que vous allez trouver, c'est une annonce au sujet de l'ajout de cette option dans l' project.json.

https://github.com/aspnet/Announcements/issues/175

De même, plus de détails ici:

https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/clr-configuration-knobs.md#host-configuration-knobs

2voto

Shadi Namrouti Points 1453

Il permet de basculer GC entre le Serveur (plus de 1 processeur) ou poste de travail (1 processeur).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X