• 16 мая 2014, пятница
  • Москва, 1-й Волоколамский проезд, д.10, стр. 3

CLRium, Москва

Регистрация на событие закрыта

Извините, регистрация закрыта. Возможно, на событие уже зарегистрировалось слишком много человек, либо истек срок регистрации. Подробности Вы можете узнать у организаторов события.

Другие события организатора

Семинары Станислава Сидристого
4014 дней назад
16 мая 2014 c 18:00 до 23:00
Москва
1-й Волоколамский проезд, д.10, стр. 3

Мастер-класс по внутренностям платформы.Net Framework. Это мастер класс по самой редкой информации в мире.Net — как CLR работает: про ее внутренние структуры данных, как их можно менять в обход рефлексии. Как подсчитать sizeof(referenceType) и про прочие вопросы (см подробное описание)

Введение

Достаточно специфичный мастер-класс, который покрывает очень интересную тему: тему внутренностей.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. Практичеcки интересный пример: Пишем метод fork(): метод, создающий поток, который стартует с того же места, на котором был вызван fork (ветвление потоков) — C++/CLI/asm

Регистрация

Рекомендуемые события

Организуете события? Обратите внимание на TimePad!

Профессиональная билетная система, статистика продаж 24/7, выгрузка списков участников, встроенные инструменты продвижения, личный кабинет для самостоятельного управления и еще много чего интересного.

Узнать больше