Содержание
- 2. Основные этапы работы с памятью Выделение памяти под ресурс Инициализация памяти Использование памяти Очистка памяти/освобождение ресурса
- 3. Проблемы управления памятью Память не бесконечна! Явное управление памятью отвлекает программиста от его основных задач Ошибки
- 4. Проблемы управления памятью (окончание) Необходимо различать уничтожение памяти (уничтожение объекта/уничтожение путей доступа) и утилизацию памяти (сборка
- 5. Влияние управления памятью на языки программирования Разработка практически всех языков программирования ориентирована на ту или иную
- 6. Примеры различных подходов Алгол 60: "первый идентификатор", с которым ассоциируется структура данных; "первый идентификатор" разрушается при
- 7. Неявное управление памятью Тенденция развития современных языков программирования: предоставить программисту только неявные средства управления памятью, через
- 8. Фазы управления памятью Начальное распределение памяти методы учета свободной памяти Утилизация памяти перемещение указателя стека сборка
- 9. Статическое управление памятью Простейший способ распределения памяти Производится во время трансляции и не меняется во время
- 10. Стековое управление памятью Простейший метод распределения памяти времени выполнения Освобождение памяти в обратном порядке Задачи утилизации,
- 11. Управление кучей Куча - это блок памяти, части которого выделяются и освобождаются способом, не подчиняющимся какой-либо
- 12. Начальное распределение и повторное использование Обычное решение - список свободного пространства. Например, в C-runtime heap для
- 13. Различные подходы к утилизации памяти Явный захват/возврат памяти Механизм malloc/free. Проблема мусора и висячих ссылок Счетчики
- 14. Сборка мусора Основная идея: допускается мусор, чтобы избежать висячих ссылок При исчерпании памяти мы выявляем мусор
- 15. Алгоритм выделения памяти в .NET Все ресурсы выделяются из управляемой кучи Стековый механизм выделения памяти (хранится
- 16. Алгоритм сборки мусора (нулевое приближение) Активные элементы определяются просмотром от корневых объектов (глобальные, статические, локальные объекты
- 17. Как все это работает? class Application { public static int Main(String[] args) { // ArrayList object
- 18. Проблемы сборки мусора Т.к. ссылки изменяются, на время работы сборщика мусора вся полезная работа прекращается -
- 19. Завершители Позволяют выполнить необходимые операции перед тем, как объект будет освобожден сборщиком мусора Завершители не являются
- 20. Проблемы завершителей Объекты с завершителями дольше создаются, требуют дополнительных затрат ресурсов и дольше остаются в системе
- 21. Finalization Internals? Память до сборки мусора Память после первой сборки мусора Память после второй сборки мусора
- 22. Воскрешение объектов class Application { static public Object ObjHolder; // defaults to null ... } public
- 23. Поведение воскрешенных объектов Объект уже был завершен; поведение малопредсказуемо Воскрешаются также все объекты, на которые указывал
- 24. Форсированная очистка объектов Методы Close/Dispose (Close для объектов, которые могут быть переиспользованы, Dispose для "одноразовых" объектов)
- 25. Метод SuppressFinalize public class FileStream : Stream { public override void Close() { // Clean up
- 26. Завершители нельзя уравновешивать! Повторные вызовы ReRegisterForFinalize нельзя уравновесить многократными SuppressFinalize, т.к. после вызова Finalize соответствующий флаг
- 27. Связанная проблема FileStream fs = new FileStream("C:\\SomeFile.txt", FileMode.Open, FileAccess.Write, FileShare.Read) StreamWriter sw = new StreamWriter (fs);
- 28. Слабые ссылки Ссылка на объект из корневого объекта называется сильной ссылкой (strong reference) Существует механизм слабых
- 29. Пример использования слабых ссылок Void Method() { Object o = new Object(); // Creates a strong
- 30. Зачем нужны слабые ссылки? Для оптимизации: некоторые объекты легко создаются, но требуют много памяти (образ структуры
- 31. Два типа слабых ссылок Конструктор слабых ссылок имеет параметр trackRessurection (по умолчанию false) Слабые ссылки, не
- 32. Алгоритм сборки мусора (первое приближение) GC строит граф достижимых объектов (см. выше) GC просматривает таблицу коротких
- 33. Поколения Исследования показали, что для большинства программ верны следующие предположения: Чем моложе объект, тем меньше его
- 34. Пример поколений объектов
- 35. Оптимизация алгоритма сборки мусора Сборка мусора только в нулевом поколении Остановка обхода графа на старых объектах
- 36. Сборка мусора в многопоточных приложениях Все потоки должны приостанавливаться на время сборки мусора Fully Interruptible Code
- 37. Сборка крупных объектов Крупные объекты (больше 20 Кб) выделяются в отдельной куче. Завершение и освобождение крупных
- 38. Явное использование сборки мусора System.GC.Collect() инициирует немедленную сборку мусора (параметр - номер поколения, по умолчанию =
- 40. Скачать презентацию















![Как все это работает? class Application { public static int Main(String[] args)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/390557/slide-16.jpg)





















Баженова Наталья Ивановна Директор Дедуровской школы, заслуженный учитель РФ.
135 пыток, применяемых головорезами ОУН-УПА
Моё рабочее место.Моё творчество.
Занимательное стихосложение
КРОО Муезерские сердца. Проект Расширяем возможности
О проведении работы по медицинскому обеспечению летней оздоровительной кампании 2012 года в Пермском крае
8 «б» класс.
Искусство кукольного театра
БЫТОВАЯ ТЕХНИКА
Презентация на тему Воины-интернационалисты
НАША ГОРДОСТЬ!
Дорожные курьезы
عربي اسمها تجربة
HISTORY OF THE USA
История ислама
Добро пожаловать!
Презентация на тему Чили
Фильмы по мотивам Карфагена
День народного единства 17 сентября
Памятники архитектуры
Forses and Motion
Уголовное право
СтудияЕМ – 101present
ВОЛЬФА 8срс
Антарктида. Безмолвный, пустынный, загадочный, белый, материк
АС ҚОРТУ ЖҮЕСІ
Анализ деятельности ТФОМС Югры за 2011 год.
Проект «Золотые ручки»