Эта книга задумана мной как максимально полное описание работы .NET CLR, и частично - .NET Framework и призвана в первую очередь заставить посмотреть читателя на его внутреннюю структуру под несколько другим углом: не так, как это делается обычно. Связано это в первую очередь с утверждением, которое может показаться многим очень спорным: любой разработчик обязан пройти школу C/C++. Почему? Да потому что из высокоуровневых эти языки наиболее близки к процессору, и программируя на них начинаешь чувствовать работу программы сильнее. Однако, понимая, что мир устроен несколько иначе и у нас зачастую нет никакого времени изучать то, чем мы не будем напрямую пользоваться, я и решил написать эту книгу, в которой объяснение всех вопросов идет с более глубокой чем обычно - позиции и с более сложными или же попросту альтернативными примерами. Которые, помимо своей стандартной миссии - на самом простом коде показать как работает тот или иной функционал, сделать реверанс в альтернативную реальность, показав что все сильно сложнее чем может показаться изначально. Зачем? Чтобы и у вас возникло чувство понимания работы CLR до последнего винтика
- Часть 1. Память
- Раздел 1. Введение в управление памятью
- Общие слова
- Введение в управление памятью
- Стек потока
- Время жизни сущности
- RefTypes, ValueTypes, Boxing & Unboxing
- Ссылочные и значимые типы данных
- Копирование
- Переопределяемые методы и наследование
- Поведение при вызове экземплярных методов
- Возможность указать положение элементов
- Разница в аллокации
- Особенности выбора между class/struct
- Базовый тип - Object и возможность реализации интерфейсов. Boxing
- Nullable<T>
- Погружаемся в boxing ещё глубже
- Что если хочется лично посмотреть как работает boxing?
- Почему .NET CLR не делает пуллинга для боксинга самостоятельно?
- Почему при вызове метода, принимающего тип object, а по факту - значимый тип нет возможности сделать boxing на стеке, разгрузив кучу?
- Почему нельзя использовать в качестве поля Value Type его самого?
- Шаблон Disposable
- Финализация
- Выводы
- Раздел 2. Практическая
- Раздел 3. Подробности реализации GC
- Выделение памяти под объект (Только наговорен текст)
- Введение в сборку мусора (Только наговорен текст)
- Фаза маркировки (Только наговорен текст)
- Фаза планирования (Только наговорен текст)
- Фазы Sweep/Collect (Только наговорен текст)
- Выводы по менеджменту памяти и работе над производительностью (Только наговорен текст)
- Раздел 4. Структура объектов в памяти
- Раздел 5. Вне порядка повествования
- Раздел 1. Введение в управление памятью
- Часть 2. Поток исполнения команд
- Раздел 1. Потоки
- Раздел 2. Исключительные ситуации
Находится в файле LICENSE