Выделение памяти для объектов в управляемой куче происходит следующим образом: 14
- При инициализации нового процесса среда выполнения резервирует для него непрерывную область адресного пространства — управляемую кучу. 4
- Система выполнения поддерживает специальный указатель (HeapPtr), содержащий адрес, по которому будет выделена память для следующего объекта. 1 Когда куча не содержит ни одного объекта, HeapPtr указывает на начало кучи. 1
- Когда приложение создаёт первый ссылочный тип (экземпляр класса), то для него выделяется память по базовому адресу управляемой кучи. 2
- При создании приложением следующего объекта сборщик мусора выделяет для него память в адресном пространстве, непосредственно следующем за первым объектом. 4
- Пока имеется доступное адресное пространство, сборщик мусора продолжает выделять пространство для новых объектов по этой схеме. 4
Выделение памяти из управляемой кучи происходит быстрее, чем выделение неуправляемой памяти. 24