Я хочу написать приложение, которое потребляет много памяти на сервере, чтобы отображать проблемы, связанные с давлением памяти на сервере. Я знаю C# довольно хорошо, но мне любопытно, что самый эффективный способ заставить приложение потреблять чрезмерное количество памяти управляемым образом. Например, я хотел бы иметь возможность передать параметр, который говорит, чтобы потреблять x МБ памяти и использовать его где-то рядом с этим значением. Любые мысли о том, как я могу это сделать, будут очень признательны.Создание приложения для потребления памяти
ответ
Не самый простой способ - просто создать массив байтов интересующего вас размера. Чтобы получить очень большие выделения, вам может понадобиться использовать несколько массивов, используя эту технику.
Кроме того, если вы так inclinded вы могли п/ссылаться на VirtualAlloc
Если вам просто нужно приложение, которое вы могли бы также использовать Testlimit от Sysinternals. Эта утилита использовалась в замечательной серии Pushing the Limits of Windows Марка Руссиновича.
Это была моя первая мысль, но потом я второй догадался, действительно ли это может быть так просто? –
Да, вы должны иметь возможность использовать 'GC.GetTotalMemory' до того, как после выделения, чтобы увидеть разницу –
Существует ограничение на то, что я могу выделить, не получая это 'System.OutOfMemoryException'. Попытка перепрыгнуть через 1 ГБ всегда приводит к исключению. Я мог бы развернуть несколько копий приложения, чтобы получить желаемый эффект, но если есть работа для этого, чтобы получить большое выделение памяти размером 4-8 ГБ, это было бы лучше всего. –
В зависимости от того, что «давление памяти» вы ищете: вариант BURNMEMORY
- boot.ini - http://support.microsoft.com/kb/833721 действительно ограничить объем доступной памяти.
- создайте программу, которая просто выделяет большой объем памяти и активно затрагивает ее. Таким образом, вы можете увидеть, как ваша другая программа реагирует на медленность распределения/использования памяти.
- выделить память в интересующем вас процессе, чтобы создать давление на адресное пространство (32-бит в основном).
Одним из способов сделать это может быть массив байтов. Преобразуйте свое входное значение из MB в байты, а затем выделите массив. Если вы хотите попробовать прямое распределение стека, вы можете использовать stackalloc.
- 1. Расчет потребления памяти приложения с помощью JMX
- 2. Оценка потребления памяти
- 3. Минимизация потребления памяти DirectShow
- 4. Laravel4 касается потребления памяти
- 5. Сокращение пикового потребления памяти
- 6. Измерение потребления памяти нити
- 7. Оптимизация потребления памяти Node.js
- 8. Огромного потребления памяти нитей
- 9. потребления памяти в C
- 10. Понимание потребления памяти F #
- 11. Понимание потребления памяти mysql
- 12. Инструменты для проверки потребления данных приложения Android
- 13. Отслеживание потребления аккумулятора приложения
- 14. Использовать РСУБД для уменьшения потребления памяти?
- 15. Стратегии для обработки потребления памяти в PHP5?
- 16. python sleep для измерения потребления памяти неточно
- 17. Понимание потребления памяти на iPhone
- 18. рельсы delayed_job проблема потребления памяти
- 19. Как добиться низкого потребления памяти?
- 20. php substr без потребления памяти
- 21. Струнные Различия потребления Реверсирование памяти
- 22. Сокращение потребления памяти при разработке
- 23. уменьшения потребления памяти ФОС услуг
- 24. Уменьшение потребления памяти Python dict
- 25. Сбой MobileSafari из-за чрезмерного потребления памяти
- 26. Обнаружение памяти и процессор потребления в particluar приложения
- 27. Ограничение потребления памяти. Физическая виртуальная память
- 28. Отслеживание памяти потоков и потребления процессора
- 29. Измерение потребления ресурсов сеанса веб-приложения
- 30. потребления памяти и правильное проектирование баз данных
В зависимости от действительности производительность может вести себя по-разному при различном использовании памяти. Выделение одного большого chunck может иметь другое влияние, чем распределение многих небольших кусков. Если вам нужен хороший тест, вы должны проверить оба. При распределении памяти через GC на C# вы не можете реально управлять основной памятью, которая потребляется. Выделение напрямую (вызов Marshall.Alloc ...) было бы одним из способов. – Polity
Вы всегда можете реализовать алгоритм трассировки лучей и загружать тонны геометрии. Это будет потреблять память быстро и жестоко. – user18490