Страницы

Поиск по вопросам

понедельник, 22 октября 2018 г.

GC (GarbageCollector) - возможно ли изменить параметры вызова?

Я понимаю что GC (GarbageCollector) вызывается сам. Я знаю что его можно вызывать вручную, но не желательно...
А возможно ли как-то изменить настройки которые напрямую влияют на частоту вызова GC?
Вот есть у меня некая апликуха, которая обрабатывает множество файлов... Сначала открывает, потом изменяет и присваивает в другую переменную, потом закрывает... и так по кругу.
Сама апликуха постоянно кушает оперативку от 1 гига до 8 гиг пока не вызовется GC.
Мне интересно, возможно ли без вручного вызова, добится результата что бы апликуха кушала не больше, скажем, 3х гигабайт.


Ответ

Можно в классе GCSettings поиграться со свойством LatencyMode. На время обработки множества файлов задать значение Batch. После обработки вернуть в Interactive
Если версия фреймворка позволяет, можно компактировать LOH: периодически задавать свойству LargeObjectHeapCompactionMode значение CompactOnce
Используется ли в приложении неуправляемая память? Если да, то следует вызывать метод GC.AddMemoryPressure (и не забывать в пару к нему RemoveMemoryPressure).
Ещё можно попробовать в конфиге включить серверный сборщик мусора.

Комментариев нет:

Отправить комментарий