Ограничение использования памяти .Net CLR - PullRequest
4 голосов
/ 03 декабря 2010

Хорошо, вот в чем проблема. В нашей производственной среде (ASP.Net) наши серверы имеют огромный объем памяти, а также огромное количество пользователей / сеансов. Мой компьютер имеет 8 концертов, и я единственный пользователь. В производстве мы (редко) получаем System.OutOfMemoryException.

С этой справочной информацией возникает вопрос: можно ли заставить CLR думать, что у меня есть только память или меньше? IIRC, есть опция командной строки, чтобы сделать это для Java.

Другим вариантом является создание действительно больших объектов, чтобы заполнить память для имитации условий с нехваткой памяти. Но для этого необходимо изменить сборки, и огромные объекты могут быть кэшированы на диск.

Рекомендации? Или другие варианты?

Ответы [ 2 ]

4 голосов
/ 03 декабря 2010

Один из способов имитации системы с меньшим объемом памяти / ресурсов состоит в создании системной виртуальной машины и выделении определенного объема памяти, который вы хотите иметь.Виртуальные машины VMWare и MS обладают этой функцией.

Помимо моделирования машин с более низким уровнем ресурсов, виртуальные машины также являются отличным способом управления средами тестирования.

1 голос
/ 03 декабря 2010

Получает ли ваша программа OutOfMemoryException, не зависит от того, сколько оперативной памяти находится на вашем компьютере. OutOfMemoryException означает, что процесс исчерпал виртуальную память, которая одинакова для каждого процесса, независимо от физической памяти

Есть пара элементов, которые могут влиять на количество виртуальной памяти в процессе

  • 32 против 64-битного процесса
  • Переключатели типа / LargeAddressAware ( Документация )

Лучше всего предположить, что сервер - это 64-битный процесс, а клиентский компьютер - 32

.
...