Как заставить Visual Studio оставаться в пределах 4 ГБ виртуального адресного пространства

Процесс devenv.exe в Visual Studio является 32-разрядным (даже при запуске в 64-разрядной ОС), поэтому он не может использовать больше чем 4 ГБ виртуальной памяти.

К сожалению, когда я отлаживаю свое приложение C ++ с помощью Visual Studio, мне часто не хватает памяти из-за этого ограничения в 4 ГБ. Например, используя VMMap, ниже показано развитие мое типичное использование Visual Studio в течение нескольких часов, приводящее к сбою.

Как я могу заставить Visual Studio использовать меньше памяти, чтобы я не тратил время на сбой?

Является ли Visual Studio типичным для использования виртуального адресного пространства более 3,5 ГБ?

Я использую Visual Studio 2012, но предполагаю, что эта проблема касается разных версий VS, поскольку у Visual Studio 2015 до сих пор нет 64-разрядной версии.

(Обратите внимание, что VMMap сообщает «Свободна» как оставшаяся память в адресном пространстве, до 4 ГБ для 32-битных процессов и 8 ТБ для 64-битных процессов в Windows.)

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


То, что я уже пробовал:

  • запуск в безопасном режиме
  • удаление всех подключаемых модулей и расширений, чтобы ничего не отображалось ни в Инструменты> Диспетчер надстроек, ни в Инструменты> Расширения (https://github.com/tsasioglu/Total-Uninstaller поможет в этом)
  • удаление моих файлов .suo / .sdf
  • удаление моих папок AppData / * / Microsoft / VisualStudio
  • используя Funnel и отфильтровывая все, кроме 3 проектов
  • удалил все мои выборы «Расположение файлов символов (.pdb)» и выбрал «Автоматически загружать символы для:» «Только указанные модули»
  • выбрано «Включить только мой код» для отладки
  • отключение Intellisense (Инструменты -> Параметры -> Текстовый редактор -> C / C ++ -> Дополнительно -> Отключить IntelliSense)

person JDiMatteo    schedule 01.07.2015    source источник
comment
Какие надстройки, расширения или подключаемые модули вы используете. Раньше у меня была такая же проблема, пока я не удалил все плагины. Теперь это редко доставляет неприятности.   -  person Grantly    schedule 01.07.2015
comment
Вам действительно нужно загрузить все 167 проектов? Если нет, попробуйте расширение Funnel: visualstudiogallery.msdn.microsoft.com/   -  person Blorgbeard    schedule 01.07.2015
comment
VS, безусловно, может много использовать виртуальную машину, особенно с большим количеством ваших проектов. Попробуйте удалить все расширения. Кроме того, убедитесь, что на вашем компьютере 8 ГБ оперативной памяти, чтобы VS не боролась с ОС за оперативную память. И SSD может помочь с перезапуском. Ваши скриншоты показывают, что вы используете Win7, хорошо, что это не XP. Вместо этого вам следует использовать счетчики производительности perfmon и Windows.   -  person Chris O    schedule 02.07.2015
comment
@ChrisO Я уже удалил все расширения, у меня 32 ГБ ОЗУ и SSD. Какую релевантную информацию могли бы предоставить счетчики производительности и производительности, которые не предоставляет VMMap?   -  person JDiMatteo    schedule 02.07.2015
comment
@JDiMatteo, извините, только что заметил ваш вопрос. Подтвержденная сумма, показанная в VMMap, является наиболее важным счетчиком для 32-битного процесса. Итак, моя ошибка, VMMap уже показывает соответствующую информацию (почему-то думал о диспетчере задач). Как вы уже определили, приложение становится нестабильным по мере приближения к общему объему зафиксированных 3,8 ГБ. Другой вариант - прикрепить пустой экземпляр VS к вашему запущенному приложению для отладки. Таким образом, большое решение не будет загружено, и вы все равно сможете получить полную отладку.   -  person Chris O    schedule 29.09.2015


Ответы (1)


Можно надежно заставить Visual Studio оставаться в пределах 4 ГБ виртуальной памяти, но вам, возможно, придется поэкспериментировать с одной или несколькими из следующих стратегий при измерении использования памяти devenv.exe с помощью VMMap:

  1. удалите плагины и расширения из Инструменты> Диспетчер надстроек и Инструменты> Расширения (https://github.com/tsasioglu/Total-Uninstaller может оказаться полезным) и / или запустить в Безопасный режим
  2. периодически (например, ежемесячно) удаляйте файлы .sdf и .suo (пока Visual Studio закрыта), чтобы их можно было воссоздать (вместо удаления рассмотрите возможность простого переименования, если вы решите, что хотите их вернуть, так как вы можете потерять некоторые настройки конфигурации)
  3. Если вы загружаете много символов (вы можете подсчитать количество загруженных символов в окне вывода VS), вы можете отключите это с помощью Инструменты> Параметры> Отладка> Символы:« Только указанные модули », затем нажмите« Указать модули »и снимите флажок« Всегда загружать символы, расположенные рядом с модулями ». Вы можете загрузить дополнительные символы во время отладки, выбрав «Отладка»> «Windows»> «Модули».
  4. Выгружайте проекты из крупных решений с помощью Funnel или Папки решений
  5. Если ничего не помогает, запустите два разных экземпляра Visual Studio: в первом загружено большое решение, но оно не используется для отладки (например, «Отладка> Начать без отладки»), а во втором не загружено решение, но он прикреплен к запущенному процессу для отладки. . (Спасибо, ChrisO за это предложение.)
  6. Если вам действительно не удается заставить Visual Studio работать, попробуйте WinDbg который используется разработчиками Microsoft и является 64-битным (в отличие от Visual Studio).

Я наблюдал, как отключили большую часть загрузки символов, уменьшив использование памяти devenv на 1,7 ГБ и удалив мои файлы .suo и .sdf, уменьшив использование памяти на дополнительные 600 МБ. Это сокращение использования памяти заставило Visual Studio перейти от нескольких сбоев в день к стабильной работе с одним и тем же экземпляром, работающим несколько дней, а иногда и недель.

Эти стратегии, вероятно, не только уменьшат использование памяти, но и значительно ускорят работу Visual Studio.

person JDiMatteo    schedule 13.07.2015
comment
Я отправил сообщение об инциденте в службу технической поддержки Microsoft с номером дела 115101513270502. Microsoft помогла мне придумать эти стратегии. - person JDiMatteo; 11.11.2015