Мастер-класс по .Net Framework Internals

Мастер-класс сайт события http://braingems.timepad.ru/event/120644/

Добавить в календарь:
Поделиться:

Введение

Достаточно специфичный мастер-класс, который покрывает очень интересную тему: тему внутренностей.Net Framework. Интерес к данному мероприятию должен возникнуть как минимум потому что эта тема практически не освещена в Интернете и знания, которые вы получите, помогут Вам взглянуть на платформу под совершенно новым углом. А так ли она безопасна? А так ли много там "магии", позволяющей нам не думать о безопасности? Это авторский проект и является результатом исследований с отладчиком: каково строение.Net объектов в памяти и что с этим можно сделать.

Что будет рассказано на Мастер-Классе по.Net Internals:

 

Основы управления памятью в .Net

  1. Small Objects Heap/Large Objects Heap
  2. Thread Stack
  3. High / Low Frequency  Heaps, Code Heap, Stubs Heap
  4. Ephemeral Segments
  5. Pages
  6. Memory mapped files

 

Как устроены объекты в памяти

  1. Как устроен любой Object? Что он содержит?
  2. MethodTable
  3. EEClass
  4. Son Of Strike (SOS) расширение отладчика для просмотра внутренностей объектов.Net
  5. Основные команды отладчика
  6. Как устроена строка в памяти? Как вычислить ее реальный sizeof(.)?
  7. Что из себя представляет Array? 4 типа массивов.
  8. Считаем sizeof() любого .Net типа (стандарнтый sizeof считает только по Valueтипам)

 

Практика: базовые трюки

  1. Получаем указатель на объект.Net, исследуем его реальную структуру
  2. Практически интересный пример: передаем объекты между AppDomains без сериализации: без накладных расходов.
  3. Практически интересный пример: загружаем сборку так что ее типами можно пользоваться в текущем домене, но при этом ее можно отгрузить.
  4. Немного развлечемся: создадим RefType экземпляр на стеке
  5. Что такое Исключение? Какие структуры данных создаются при написани try/catch/finally? Как их получить и как ими управлять? Почему исключение  безошибочно пробрасывается через методы, которые не поддерживают исключения?
  6. Помещаем в цепочку свой обработчик, который будет просто слушать все что через него идет.
  7. Вручную, без catch перехватываем исключение
  8. Как реализуется catch(){ throw; }

 

Практика: продвинутые трюки

  1. Разрабатываем класс для выделения .Net объектов вне .Net памяти (вне SOH/LOH)
  2. Пишем пул объектов вне .Net памяти
  3. Вызываем конструктор по указателю — избавляемся от тормозов рефлексии
  4. Практически интересный пример: Создаем прокси-тип, подменяя указатели на скомпилированные тела методов
  5. Практически интересный пример: Пишем ядро Memory Profiler’а — делаем дамп виртуальной памяти с распознованием .Net объектов в ней.
  6. Создадим тип вручную прямой генерацией внутреених структур CLR (таблиц виртуальных методов и интерфейсов)
  7. Практичеки интересный пример: Расшарим .Net объект между процессами (через использование Paging файла)

Комментарии (0):

Оставлять комментарии могут только зарегистрированные пользователи

Для получения embed кода необходимо кликнуть правой
кнопкой мыши на видео и выбрать пункт меню
'Сгенерировать HTML код'

Забыли пароль? Регистрация