Продолжаем кромсать CLR: пул объектов .Net вне куч SOH/LOH
6 min
Добрый день, уважаемые разработчики (просто не знал, с чего начать пост). Предлагаю перед тем как начнется трудовая неделя немного подразмять мозги (совсем немного) и построить свой Small Objects Heap для .Net. Вернее даже не Small Objects Heap, а Custom Objects Heap.
Как все мы знаем, в .Net существует две группы куч: для больших и малых объектов. Как выяснить, во сколько нам обойдется объект можно при помощи кода из этой статьи (он нам пригодится):
Ручное клонирование потока, а получить указатель на объект и по указателю получить сам объект можно научиться, прочтя эту статью:
Получение указателя на объект .Net. Также нам понадобится статья корейского (южно-) программиста по перенаправлению указателя на скомпилированную часть метода на другой метод: 실행 시에 메서드 가로채기 — CLR Injection: Runtime Method Replacer 개선
Так что давайте поэкспериментируем и напишем библиотеку, которая позволит:
Ссылка на проект на GitHub:
DotNetEx
Как все мы знаем, в .Net существует две группы куч: для больших и малых объектов. Как выяснить, во сколько нам обойдется объект можно при помощи кода из этой статьи (он нам пригодится):
Ручное клонирование потока, а получить указатель на объект и по указателю получить сам объект можно научиться, прочтя эту статью:
Получение указателя на объект .Net. Также нам понадобится статья корейского (южно-) программиста по перенаправлению указателя на скомпилированную часть метода на другой метод: 실행 시에 메서드 가로채기 — CLR Injection: Runtime Method Replacer 개선Так что давайте поэкспериментируем и напишем библиотеку, которая позволит:
- Аллоцировать участок памяти
- Разметить его как набор объектов определенного .Net типа
- Выделять объекты с этой памяти
- Возвращать их обратно
Ссылка на проект на GitHub:
DotNetExДля начала, полный список выложенных на Хабре статей данного цикла
Делаем отгружаемые сборки: взаимодействуем между доменами без маршаллинга
Получение указателя на объект .Net
Ручное клонирование потока. Когда Assembler + C# или Java = Love
Изменение кода системных сборок или «утечка» .Net Framework 5.0
Как работает декомпиляция в .Net или Java на примере .Net
Продолжаем кромсать CLR: пул объектов .Net вне куч SOH/LOH
Снимаем дамп объектов с памяти .Net приложения
Получение указателя на объект .Net
Ручное клонирование потока. Когда Assembler + C# или Java = Love
Изменение кода системных сборок или «утечка» .Net Framework 5.0
Как работает декомпиляция в .Net или Java на примере .Net
Продолжаем кромсать CLR: пул объектов .Net вне куч SOH/LOH
Снимаем дамп объектов с памяти .Net приложения
Мы с вами люди рабочие и зачастую не замечаем ничего что происходит за пределами нашей работы. Так и я, работая изо дня в день, знаю только про свой SpecFlow и смежные вопросы. Но ничего – по сторонам. Этим постом я хочу восполнить пробелы новостей в области .Net
Приветствую.

службы Windows. 
В России от 30 до 100 процентов населения имеют проблемы со зрением. При этом около 28% процентов детей страдают близорукостью (миопией). В государственных и частных клиниках нашей страны практикуют различные методы лечения близорукости у взрослых и детей — от выписывания витаминов для глаз или капель до лазерных операций. В последнее время врачи стали назначать комбинированное лечение на основе препаратов и работы в специальных сертифицированных медицинских программах-тренажёрах. Такое лечение не способно полностью восстановить зрение, но оно его временно улучшает за счёт снятия зрительного напряжения. Я сама в детстве проходила курс такого лечения. Существующие программы, используемые в таком лечении, стоят очень дорого, в государственных больницах их как-правило бесплатно нет, посещение сеансов в частных клиниках стоит ещё дороже, чем покупка программы. 

