GC в режиме рабочей станции в приложении ASP.NET - PullRequest
0 голосов
/ 30 сентября 2011

Я смотрю на дампы и вижу

mscorwks! WKS :: GCHeap :: GarbageCollectGeneration + 0x1a9.

Если я понимаю, что GC выполняет сборку мусора в режиме рабочей станции?Я вижу, что другие потоки ожидают на mscorwks!WKS::GCHeap::WaitUntilGCComplete+0x34.

Означает ли это, что я работаю с рабочей станцией concurent = false режим GC?Я знаю, что этот сервер - один процессор с одним ядром.Должен ли я изменить на concurent = true для приложения ASP.NET?

Если я добавлю другой процессор, будет ли GC автоматически работать в режиме сервера?

1 Ответ

1 голос
/ 30 сентября 2011

Concurrent GC предназначен для интерактивных (UI) приложений. Для серверных приложений, таких как ASP.NET, предпочтительнее использовать не одновременный сбор данных. В соответствии с документацией MSDN , ASP.NET выбирает лучшую конфигурацию системы, и вам не нужно изменять эти настройки.

Для получения дополнительной информации просмотрите документацию по сборке мусора в MSDN. Что касается ответа, ваша последняя часть вопроса - как правило, CLR Host может переопределить настроенное значение режима GC. В соответствии с MSDN doc ASP.NET выберет GC-сервер для многопроцессорных машин. Так что да, если вы добавите еще один процессор, вы должны увидеть ваше приложение ASP.NET, используя режим сервера GC.

Кроме того, возможно, надежный способ выяснить, что режим GC использует свойство GCSettings.IsServerGC . Точно так же GCSettings.LatencyMode сообщит вам, является ли GC параллельным или нет. Например, в режиме рабочей станции значение Interactive указывает одновременный сборщик мусора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...