Создание приложения, потребляющего память - PullRequest
3 голосов
/ 21 февраля 2012

Я хочу написать приложение, которое потребляет много памяти на сервере, чтобы иметь возможность отображать проблемы, связанные с нехваткой памяти на сервере.Я достаточно хорошо знаю C #, но мне любопытно, какой самый эффективный способ заставить приложение потреблять чрезмерное количество памяти контролируемым образом.Например, я хотел бы иметь возможность передать параметр, который говорит, что он потребляет х МБ памяти и имеет ли он потребление где-то близко к этому значению.Любые мысли о том, как я мог бы это сделать, будут с благодарностью.

Ответы [ 3 ]

3 голосов
/ 21 февраля 2012

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

Такжеесли вы так склонны, вы можете вызвать p / invoc для VirtualAlloc

Если вам просто нужно приложение, вы также можете использовать Testlimit от sysinternals.Эта утилита была использована в удивительном сериале Марка Руссиновича Расширение границ Windows .

2 голосов
/ 21 февраля 2012

Одним из способов сделать это может быть создание массива байтов.Преобразуйте ваше входное значение из МБ в байты, а затем выделите массив.Если вы хотите попробовать выделение стека напрямую, вы можете использовать stackalloc .

2 голосов
/ 21 февраля 2012

В зависимости от того, какое «давление памяти» вы ищете:

  • опция записи в boot.ini - http://support.microsoft.com/kb/833721 для реального ограничения объема доступной памяти.
  • создайте программу, которая просто выделяет большой объем памяти и активно прикасается к ней. Таким образом, вы можете увидеть, как ваша другая программа реагирует на медленное распределение / использование памяти.
  • выделить память в интересующем вас процессе, чтобы создать нагрузку на адресное пространство (в основном 32-разрядное).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...