2009-04-27 5 views
20

jemand hat eine Konfiguration verwendet, um die Garbage Collector ermöglicht für Multi-Prozessor-Maschinen optimiert mit Aspnet.config mit:
Erfahrung mit gcServer = "true" Garbage Collector Set für .NET

<gcServer enabled="true"/> 
<gcConcurrent enabled="true"/> 

Gab es eine Verbesserung in der Leistung Ihrer Site?
Sind irgendwelche Probleme bemerkt?

+0

Siehe [hier] (https://Stackoverflow.com/a/6251689/4140278) wahrscheinlich erhalten Sie Antwort –

Antwort

19

Erstens, Concurrent und Server schließen sich gegenseitig aus. Weitere Details zu Missverständnissen beim Server-GC finden Sie unter this blog post. Allerdings hostet ASP.NET standardmäßig den Server-GC (siehe Scott Hanselman's discussion), daher gibt es dort keinen Unterschied.

Ich würde empfehlen, mit Server anstelle von gleichzeitig für eine ASP.NET-Website beizubehalten. Für eine Anwendung im Benutzermodus war der gleichzeitige GC eine Benutzerreaktionsfähigkeit, da der Server gc "hängen" verursacht.

Ich habe den Server GC verwendet, und in bestimmten Situationen erhebliche Verbesserungen festgestellt.

Der Servermodus-GC hilft Benutzer-Apps jedoch, wenn Ihre Benutzeranwendung mit riesigen Speicherpools arbeitet und stark fragmentiert wird.

+7

Dies ändert sich in 4.5, die ** Server gleichzeitige GC **: http: // msdn. microsoft.com/en-us/library/ms229357.aspx – skolima

+0

@skolima Ja - wieder, Sie verlassen es nur "Server", und es verwendet automatisch die neue gleichzeitige Server-GC –

2

Einfach gesagt, der Workstation GC-Modus verbessert die Leistung für einen einzelnen Benutzer, während der Server-GC-Modus für die Verwendung in einem Programm mit mehreren Anfragen die ganze Zeit entwickelt wurde. Ich hoffe wirklich, dass diese Frage kein Symptom für ein viel größeres Problem ist. Manchmal, wenn die Leute anfangen, den Müllsammler zu befragen, liegt es daran, dass sie nicht den erwarteten Speicherbedarf sehen. Erwarten Sie keine großen Gewinne mit einem anderen Garbage Collector. In fast allen Tests, die ich gemacht habe, hat es keinen großen Unterschied gemacht, welchen Sammler Sie verwenden.

2

(sehr alte Frage, ich weiß, aber ich dachte, diese trotzdem hinzufügen)

Es gibt einen großen Unterschied zwischen Server GC und Concurrent GC: Der Server GC einen Thread pro Prozessor und setzt die auf Fäden dieser Prozessor bei einer Sammlung, der Server Concurrent GC-Thread läuft parallel zu den anderen Threads, dh keine Aussetzung. Siehe this MSDN article for more info und subtilere Unterschiede.

Abhängig von der Zeit, die ein Zyklus benötigt, kann dies einen großen Unterschied in der Benutzerreaktion Ihrer Anwendung ausmachen, also wählen Sie mit Bedacht. Im Fall von ASP.NET, das keine Benutzeroberfläche hat, ist Server GC die bessere (und Standard) Option.