Установить максимальное использование памяти C # - PullRequest
4 голосов
/ 23 января 2012

У меня есть приложение, которое должно использовать библиотеку, которую я не писал, и у меня нет возможности изменить ее.В основном это утечка памяти, поэтому чем дольше она работает, тем больше она утекает;в основном он просто пишет устаревшие файлы подкачки, которые я не могу удалить.Утечка памяти фактически не вызывает сбой программы, она просто пожирает всю память.Когда она использует всю системную память, ОС просто начинает удалять старые файлы подкачки, и все работает нормально.

Если я запусту свое приложение в системе 2 ГБ, оно будет использовать 2 ГБ и продолжит работу;То же самое для системы 16 ГБ.

Есть ли способ установить объем памяти, который может использовать приложение?

Ответы [ 2 ]

3 голосов
/ 23 января 2012

Это ограничение для каждого процесса в Windows.Каждый процесс получает ~ 2 ГБ виртуального адресного пространства (это то, что использует Heap) на 32-битной машине.И я боюсь, что вы ничего не можете с этим поделать.

Грубо говоря, CLR может хранить до 1,6 ГБ объектов в памяти.Этого должно быть достаточно для большинства приложений.Если нет, то вам нужно поработать над вашим приложением.

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

Существует также подробная статья по MSDN - Исследование проблем с памятью

Надеюсь, это будет полезно.

0 голосов
/ 21 ноября 2013

Посмотрите также на Process Governer: http://lowleveldesign.wordpress.com/2013/11/21/set-process-memory-limit-with-process-governor/. Я написал этот инструмент для проверки утечек памяти в моих приложениях.Процесс, запущенный с ограничением памяти, выбросит OutOfMemory, если он превысит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...