Сообщение Re[2]: Как правильно закрепить объект в памяти? от 21.02.2019 9:11
Изменено 21.02.2019 9:30 Serginio1
Re[2]: Как правильно закрепить объект в памяти?
Здравствуйте, hi_octane, Вы писали:
_>Хоть сто раз GC.Collect() вызови — ни малейшей гарантии что объект попадёт в 2-nd generation нет и быть не может. Всё сломает простейшая эвристика вида "if(памяти ещё дохрена) return;" которых в коде GC _много_.
J>>Есть задача закрепления в памяти массива байтов (на длительное время) для использования оного в unmanaged коде.
_>Может тогда:
_>1) Выделить память в Unmanaged коде и вернуть его в Managed.
_>2) В Managed заполнить память нужными данными
_>3) Отдать заполненное в обработку в Unmanaged
_>????
_>Profit
J>>И есть ли какие-нибудь техники избежания фрагментации Gen2?
_>Gen2 не фрагментируется. Фрагментируется LOH, и то на x86. На x64 я не уверен что проблема с этим вообще существует. Вот тут
В 4.5 дефрагментируется и LOH. Кстати проще выделять память на стороне натива и удалять на его стороне.
Ghjie ghjotybz pf heccrbt yfpdfybz/ <sk vjkjl
https://habr.com/ru/post/304482/
_>Хоть сто раз 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 который может помочь с тестированием на фрагментацию.Дата: 14.10.14
В 4.5 дефрагментируется и LOH. Кстати проще выделять память на стороне натива и удалять на его стороне.
Ghjie ghjotybz pf heccrbt yfpdfybz/ <sk vjkjl
https://habr.com/ru/post/304482/
Re[2]: Как правильно закрепить объект в памяти?
Здравствуйте, hi_octane, Вы писали:
_>Хоть сто раз GC.Collect() вызови — ни малейшей гарантии что объект попадёт в 2-nd generation нет и быть не может. Всё сломает простейшая эвристика вида "if(памяти ещё дохрена) return;" которых в коде GC _много_.
J>>Есть задача закрепления в памяти массива байтов (на длительное время) для использования оного в unmanaged коде.
_>Может тогда:
_>1) Выделить память в Unmanaged коде и вернуть его в Managed.
_>2) В Managed заполнить память нужными данными
_>3) Отдать заполненное в обработку в Unmanaged
_>????
_>Profit
J>>И есть ли какие-нибудь техники избежания фрагментации Gen2?
_>Gen2 не фрагментируется. Фрагментируется LOH, и то на x86. На x64 я не уверен что проблема с этим вообще существует. Вот тут
В 4.5 дефрагментируется и LOH. Кстати проще выделять память на стороне натива и удалять на его стороне.
Ghjie ghjotybz pf heccrbt yfpdfybz/ <sk vjkjl
https://habr.com/ru/post/304482/
Посмотри ВыделитьПямять
_>Хоть сто раз 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 который может помочь с тестированием на фрагментацию.Дата: 14.10.14
В 4.5 дефрагментируется и LOH. Кстати проще выделять память на стороне натива и удалять на его стороне.
Ghjie ghjotybz pf heccrbt yfpdfybz/ <sk vjkjl
https://habr.com/ru/post/304482/
Посмотри ВыделитьПямять