@MaximIs

Как контролировать память в C#?

Доброго времени суток, как установить лимит программе, например в 100мб?
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
@Lelushak
В общем случае — никак. А зачем? Единственная возможная рекомендация здесь — пишите код так, чтобы много памяти не тратилось.

Гипотетически, можно разработать для приложения специальную архитектуру, которая будет позволять прерывать любые запущенные задачи при превышении порога памяти, освобождать ресурсы и затем дожидаться вызова GC. Например, через TPL с CancellationToken. Но это, мягко говоря, непростой путь. Занимаемую память можно мониторить через GC.GetTotalMemory или средствами ОС. Но есть ещё два нюанса:

1. Постоянное измерение памяти приведет к падению общей производительности программы
2. Вы не сможете использовать библиотеки, которые не поддерживают отмену вызванных функций
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@crazywu
Если вы говорите о прямом чтении/записи в память, то читайте про unsafe и указатели в c#.
Если вы говорите о gc, то что бы хорошо понимать происходящее стоит почитать CLR VIA C#, Джеффри Рихтер

P.S. В остальном может помочь тонкий контроль размеров контейнеров и тд
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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