Re: Как правильно закрепить объект в памяти?
От: hi_octane Беларусь  
Дата: 18.02.19 19:01
Оценка:
Хоть сто раз GC.Collect() вызови — ни малейшей гарантии что объект попадёт в 2-nd generation нет и быть не может. Всё сломает простейшая эвристика вида "if(памяти ещё дохрена) return;" которых в коде GC _много_.

J>Есть задача закрепления в памяти массива байтов (на длительное время) для использования оного в unmanaged коде.

Может тогда:
1) Выделить память в Unmanaged коде и вернуть его в Managed.
2) В Managed заполнить память нужными данными
3) Отдать заполненное в обработку в Unmanaged
????
Profit

J>И есть ли какие-нибудь техники избежания фрагментации Gen2?

Gen2 не фрагментируется. Фрагментируется LOH, и то на x86. На x64 я не уверен что проблема с этим вообще существует. Вот тут
Автор: hi_octane
Дата: 14.10.14
немного обсуждения и пример от Serginio1 который может помочь с тестированием на фрагментацию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.