Использование памяти
Паямять в Net:
1) Стек | Stack - область памяти, выделяемая для каждого потока.
Используется для хранения стека вызова функций потока, параметров при вызове функций и локальных переменных (структур и ссылока на классы).
Имеет константный размер, при переполнении приводит к падению программы.
Выделение памяти и отчистка происходит быстро (по сравнению с другими), не задействует сборщик мусора.
2) Куча | Heap - основная область для хранения экземпляров объектов.
В своей работе задействует сборщик мусора, для оптимизации пространсва также происходит процесс дефрагментации.
Состоит из 3 компонентов:
2.1) Основной раздел
2.2) LOH | Large object heap
2.3) POH | Pinned object heap
Ссылки:
Обработка больших объемов данных в памяти на C#
https://habr.com/ru/post/114495/
Память: LOH и Chunked Lists
https://habr.com/ru/post/83929/
.NET Max Memory Use 2GB even for x64 Assemblies
https://stackoverflow.com/questions/982051/net-max-memory-use-2gb-even-for-x64-assemblies
CLRium Оптимизация программ под Garbage Collector
https://habr.com/ru/company/clrium/blog/453082/