Использование памяти

Версия 4.1 от Alexandr Fokin на 2021/11/21 13:35

Паямять в 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/

Теги: