Ограничение размера управляемой "кучи" в приложении C#

Лично, я предпочитаю WinUnit, так как он не требует меня к запись ничто за исключением моих тестов (я создаю .dll как тест, не exe). Я просто разрабатываю проект и указываю на WinUnit.exe на мой тестовый выходной каталог, и он выполняет все, что он находит. Вы можете загружать проект WinUnit здесь . (MSDN теперь требует, чтобы Вы загрузили всю проблему, не статью. WinUnit включен в.)

5
задан Assaf Lavie 28 October 2009 в 07:56
поделиться

3 ответа

Мне неизвестны такие параметры для обычной среды CLR. Я полагаю, что вы можете контролировать это, если реализуете свой собственный хост CLR.

Однако я не согласен с вашей оценкой роста кучи. Куча увеличивается, потому что ваше приложение выделяет и удерживает объекты.

Есть несколько способов ограничить использование памяти. Пожалуйста, просмотрите этот вопрос, чтобы получить некоторые ответы: Уменьшение использования памяти приложениями .NET?

4
ответ дан 14 December 2019 в 08:54
поделиться

Я не пробовал это делать, но вы можете попытаться вызвать SetProcessWorkingSetSizeEx , передав правильные флаги, чтобы гарантировать, что ваш процесс никогда не получит больше, чем столько памяти. Я не знаю, будет ли сборщик мусора учитывать это и производить очистку чаще, или вы просто получите исключение OutOfMemoryExceptions.

1
ответ дан 14 December 2019 в 08:54
поделиться

Диспетчер памяти позволяет хосту предоставить интерфейс, через который CLR запросит всю память распределения. Он заменяет как API памяти Windows® и стандартные C процедуры распределения CLR. Кроме того, интерфейс позволяет CLR информировать множество последствий невыполнение определенного распределения (для пример, сбой выделения памяти из потока, удерживающего замок, может иметь определенные последствия надежности). Это также позволяет хосту настраивать Ответ CLR на неудачное выделение, начиная с OutOfMemoryException быть брошенным насквозь процесс сносится. Гостья также можно использовать этот менеджер для повторного захвата память из CLR путем выгрузки неиспользуемые домены приложений и принудительный мусор коллекция. Менеджер памяти интерфейсы перечислены в

Source and More: http://msdn.microsoft.com/en-us/magazine/cc163567.aspx#S2

Edit:

Я бы вам не рекомендовал чтобы управлять памятью самостоятельно, потому что чем больше вы попадете, тем больше проблем вы, вероятно, столкнетесь, вместо этого CLR отлично справляется с этой задачей.

Но если вы скажете, что для меня очень важно справляться со всем самостоятельно, тогда я могу » т ничего.

2
ответ дан 14 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: