Что такое стандартный сборщик Visual Studio и почему он использует 10 ГБ ОЗУ?

21

Надеюсь, это правильный сайт обмена стеками, чтобы публиковать на нем ... Не думаю, что это был вопрос программирования для SO. Во всяком случае, я использую Visual Studio 2015 и получил уведомление от Windows о закрытии VS2015, потому что у него мало памяти. У меня 24 ГБ ОЗУ, и я только что перезагрузился вчера, так что я думаю, что-то здесь далеко. Я иногда использую интерактивное окно C # и интерактивное окно Python 2.7, но они не использовались во время этого сообщения.

Примечание. Пока я писал это, я только что получил сообщение «Неизвестный сбой» от devenv.exe (процесс vs2015). Но служба Standard Collector по-прежнему работает с использованием 10,7 ГБ.

Кто-нибудь знает, что такое стандартный коллектор? И что может привести к резкому увеличению использования ОЗУ?

Примечание: снова, когда я пишу, я просто заметил, что служба Standard Collector остановлена ​​в моем диспетчере задач, и у меня вернулась вся ОЗУ.

Большое использование ОЗУ процессом Visual Studio "Standard Collector"

Обновление: Похоже, что это может быть ошибкой, которую команда VS пыталась исправить в обновлении 1. У меня определенно установлено обновление 1, но, возможно, я должен попытаться воспроизвести некоторый пример кода и отправить его команде VS. Сбой экземпляра devenv в настоящее время также не отлаживается. (Хотя есть другой экземпляр, где он отлаживается, как вы можете видеть по расширению .vshost.exe в диспетчере задач)

Этот экземпляр devenv не аварийно завершился, и теперь он все еще работает в отладчике без проблем.

введите описание изображения здесь

C. Tewalt
источник
Он имеет дело с диагностическими инструментами. , Вы знаете, что Chrome существует как 64-битный процесс, верно?
Ramhound
1
это известная ошибка, и в ней есть исправление с проверкой обновлений здесь для получения информации: connect.microsoft.com/VisualStudio/feedback/details/1630071/…
arana
@arana, я запускаю обновление 1, которое "должно" иметь исправление ...
C. Tewalt
1
@Ramhound Chrome на самом деле не имеет отношения к этому вопросу. Или вы просто любезно делитесь полезной информацией?
С. Тевальт

Ответы:

16

Процесс Collector, по-видимому, связан с инструментарием / диагностикой кода, работающего в режиме отладки, в Visual Studio 2015. Microsoft признала, что существует проблема с неограниченным использованием памяти этим процессом, и говорит: «Мы исследовали первопричину и имеем сделал исправление, которое будет предоставлено в VS2015 Update 1 »

Поэтому убедитесь, что вы получили последнее обновление Visual Studio 2015. Для смягчения тем временем:

«Между тем, если вы заметили, что процесс потребляет слишком много памяти, у вас есть два способа восстановления. Самый простой - просто перезагрузить компьютер. Это вернет все в новое состояние. Другая вещь, которую вы можете сделать, чтобы уменьшить потребление памяти, это остановить службу Visual Studio Standard Collector с помощью пользовательского интерфейса диспетчера служб. Имя службы - «VSStandardCollectorService140». Его можно безопасно остановить, если вы не выполняете отладку в Visual Studio. Если вы останавливаете службу во время отладки (даже останавливаетесь на точке останова) ) затем окно «Средства диагностики» отобразит сообщение об ошибке после возобновления целевого процесса отладки. "

Посмотрите на эту ссылку, откуда взяты приведенные выше цитаты: https://connect.microsoft.com/VisualStudio/feedback/details/1630071/visual-studio-standard-collector-unbounded-memory-usage

Эта ссылка также содержит пример кода того, кто испытал это из консольного приложения. Может быть стоит запустить этот пример кода, чтобы посмотреть, не вызывает ли он проблему в вашей системе. Человек, который сообщил о проблеме, также указал, что она возникла периодически, но запуск кода в режиме отладки Visual Studio, по-видимому, был одним из общих потоков.

Возможно, Microsoft устранила некоторые коренные причины проблемы, но сейчас появляются и другие нефиксированные причины.

Developer63 - GoFund Monica
источник
1
Один простой способ (Windows 7 / Windows 10) для вызова графического интерфейса служб - это запустить / запустить, ввести «services.msc» и нажать Enter. В списке служб на моем компьютере с Windows 7 упомянутое имя, которое я считаю, обозначается как «Служба Visual Studio Standard Collector».
Разработчик63 - GoFund Monica
Интересно, хотя у меня установлено обновление 1 -> поэтому я использую интерактивное окно c # (доступно только в обновлении 1). Интересно, что пример кода из вашей ссылки, который воспроизвел парень, использует Задачи. Мое приложение справедливо использует задачи и асинхронный код.
C. Tewalt
@matrixugly, насколько я понимаю проблему, служба Collector в основном работает все время, когда VS2015 работает, собирая информацию об инструментах / диагностике приложения. Поэтому то, что вы делали в то время, когда Windows выдала предупреждение о нехватке памяти, может иметь или не иметь никакого отношения к проблеме. Это могло произойти намного раньше, когда процесс Служба сборщика не смог распознать, что он должен был начать очистку старых данных измерительных приборов, постепенно заполняя память, и сообщение появилось несколько часов спустя во время несвязанного действия.
Developer63 - GoFund Monica
7
По-прежнему существует в обновлении 3 RC. :(
СаюсиАндо
1
Это все еще проблема для VS2017? Если да, каковы последствия отключения этого сервиса?
катит
2

Отключите службу, и она больше не будет поглощать вашу память.

Сервис-> Параметры-> Отладка-> Общие, отключите «Включить средства диагностики при отладке».

Сумит Джоши
источник
2
Вы также должны упомянуть, что у вас не будет диагностических инструментов, которые являются частью пакета отладки, который используют многие люди.
катится
1
Лично я, как разработчик, всегда отключал диагностические инструменты, потому что чувствовал, что моя машина стала намного медленнее с первого раза, и включал его только тогда, когда у меня действительно есть проблема с производительностью, которую мне нужно диагностировать (что довольно редко), и все же сеанс профилирования обычно дает мне гораздо больше информации. Мне очень любопытно узнать, для чего люди будут использовать его на регулярной основе.
Эдуардо Вада