Was ist server-garbage collection in ASP.NET Core?
Ich habe ein Upgrade ein ASP.NET Core-Projekt zu VS2017 und die neue csproj, und gibt es diese option:
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
Was ist server-garbage collection? Es gibt keinerlei Dokumentation, nur ein migration guide, die davon ausgegangen, dass Sie bereits wissen, was es ist.
(Es sei denn, es ist eine formale doc, in dem Fall bitte lassen Sie mich wissen).
Zusammenfassung: Es gibt keine details in der Dokumentation für viele der zugrunde liegenden tech, leider. Aber @PanagiotisKanavos link ist der wichtige Teil über "server-gc" hier.
- Haben Sie versucht, zu googeln? Es gibt eine Menge an Dokumentation, going back mehrere Jahre. Das ist nicht neu .NET Core, auch wenn die Eigenschaft hat einen neuen Namen
- Könnte das gleiche sein wie dieser?
- Dann haben Sie gesehen, dass das erste Ergebnis ist Grundlagen der Garbage Collection, die erklärt den Unterschied zwischen workstation-und server-garbage collection. Dies hat sich nicht geändert .NET Core
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es zu sein, den Unterschied zwischen Normalen (Workstation) und (Concurrent Server) Garbage Collection Strategien. Grundsätzlich ist das Workstation-Konzept läuft in Probleme, die in vielen extremen Fällen. Und Massiv-Multithread-Szenarios (wie ASP-Webserver) sind Paradebeispiele für solch ein extremer Fall:
https://social.msdn.microsoft.com/Forums/en-US/286d8c7f-87ca-46b9-9608-2b559d7dc79f/garbage-collection-pros-and-limits?forum=csharpgeneral
Beachten Sie, dass die gleichzeitige GC hat natürlich Probleme mit schwachen Referenzen und der Defragmentierung, aber wenn das gilt .NET-Core-Implementierung ist, entzieht sich meiner Kenntnis. Es gibt alle Arten von Verbesserungen die .NET Core team tun konnte, um sich den code, und dieser geht in den Bereich der Gestaltung einer GC-memory-manager.
Vielleicht ist es definiert nur, wie viele parallele threads verwendet werden, für die tagging-Teil (mit der Arbeitsstation Standard ist 1). Es könnte auch einige modifizierte memory allocation Strategien, um Probleme zu vermeiden wie die Defragmentierung.
In jedem Fall ist die eigentliche Sammlung wird durch die Natur zu laufen, single-threaded, halt alle verwalteten threads und wird begrenzt durch die Geschwindigkeit des Arbeitsspeichers, die CPU-Geschwindigkeit.
msdn-Dokumentation...
https://msdn.microsoft.com/en-us/library/ms229357(v=vs. 110).aspx
Die common language runtime (CLR) unterstützt zwei Arten von garbage collection: workstation-garbage-collection, die verfügbar ist auf allen Systemen und server-garbage collection, die auf Multiprozessor-Systemen. Verwenden Sie das element, um die Art von garbage collection die CLR führt. Verwenden Sie die GCSettings.IsServerGC-Eigenschaft, um zu bestimmen, wenn der server-garbage collection aktiviert ist.
Für single-Prozessor-Computern, die Standard-workstation-garbage-collection sollte die Schnellste option. Entweder workstation oder server verwendet werden kann für zwei-Prozessor-Computern. Server-garbage collection sollte die Schnellste option, für mehr als zwei Prozessoren.
Dieses element kann nur verwendet werden in der Konfigurationsdatei der Anwendung; es wird ignoriert, wenn es in der Maschinen-Konfigurationsdatei.
Fundamentals
ArtikelWenn die übertragung über ein, die
ServerGarbageCollection
Karten aus derSystem.GC.Server
.Einfach, es ist ein Konfigurationswert, weist die .net-runtime zum ausführen server-garbage collection. Historisch dies wurde geschafft, indem die
- Projekt.json
. Es aktiviert/deaktiviert die server-garbage collection.Dies ist die so nah an einem offiziellen Dokument, dass Sie gehen zu finden, es ist eine Ankündigung über das hinzufügen dieser option in der
project.json
.https://github.com/aspnet/Announcements/issues/175
Ebenfalls, weitere details hier:
https://github.com/dotnet/coreclr/blob/master/Documentation/project-docs/clr-configuration-knobs.md#host-configuration-knobs
false
) und server (true
) GC.Wechselt zwischen GC-Server (mehr als 1 Prozessor) oder workstation (1 Prozessor).