Опыт использования gcServer=true для установки сборщика мусора для .NET.

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

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

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


person lsalamon    schedule 27.04.2009    source источник
comment
См. здесь, возможно, вы получите ответ   -  person Pankaj Rawat    schedule 18.06.2017


Ответы (3)


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

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

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

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

person Reed Copsey    schedule 27.04.2009
comment
Это изменилось в версии 4.5, в которой появился параллельный сборщик мусора на сервере: msdn.microsoft.com/en-us/library/ms229357.aspx - person skolima; 03.08.2012
comment
@skolim Да - опять же, вы просто оставляете его сервером, и он автоматически использует новый параллельный сервер GC - person Reed Copsey; 03.08.2012

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

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

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

person Abel    schedule 27.03.2012

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

person SamuelWarren    schedule 08.12.2009