Опыт использования gcServer = "true" для установки сборщика мусора для .NET - PullRequest
24 голосов
/ 27 апреля 2009

Кто-то использовал конфигурацию, позволяющую оптимизировать сборщик мусора для многопроцессорных машин с помощью Aspnet.config с:

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

Произошло ли улучшение производительности вашего сайта?
Замечены ли какие-либо проблемы?

Ответы [ 3 ]

20 голосов
/ 27 апреля 2009

Во-первых, Concurrent и Server являются взаимоисключающими опциями. См. эту запись в блоге для некоторых деталей о неправильных представлениях GC сервера Однако в ASP.NET по умолчанию размещается GC сервера (см. обсуждение Скотта Хансельмана ), поэтому там не будет никакой разницы.

Я бы рекомендовал придерживаться сервера вместо одновременного использования для веб-сайта ASP.NET. Для приложения в пользовательском режиме одновременный GC реагировал на действия пользователя, поскольку сервер gc вызывает «зависания».

Я использовал сервер GC и заметил значительные улучшения в определенных ситуациях.

Серверный режим GC помогает пользовательским приложениям, однако, если ваше пользовательское приложение работает с огромными пулами памяти и сильно фрагментировано.

3 голосов
/ 27 марта 2012

(очень старый вопрос, я знаю, но я все равно подумал добавить это)

Существует одно существенное различие между Server GC и Concurrent GC: Server GC имеет один поток на процессор и приостанавливает потоки на этом процессоре при выполнении сбора, поток параллельного GC сервера работает параллельно с другими потоками, т.е. подвеска. См. эту статью MSDN для получения дополнительной информации и более тонких различий.

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

2 голосов
/ 08 декабря 2009

Проще говоря, режим GC на рабочей станции повышает производительность для одного пользователя, а режим GC на сервере предназначен для использования в программе, которая постоянно имеет несколько запросов. Я искренне надеюсь, что этот вопрос не является симптомом гораздо более серьезной проблемы. иногда, когда люди начинают задавать вопросы сборщику мусора, это происходит потому, что они не видят след памяти, который они ожидали. не ожидайте больших успехов с другим сборщиком мусора. Практически во всех тестах, которые я провел, не имело значения, какой коллектор вы используете.

...