Книга: Основы объектно-ориентированного программирования
Ключевые концепции
Ключевые концепции
[x]. Существует три основных режима создания объектов: статический, основанный на стеке, динамический. Последний характерен для ОО-языков, но встречается везде, например, в Lisp, Pascal (указатели и new), C (malloc), Ada (типы доступа).
[x]. В программах, создающих много объектов, объекты могут становиться недостижимыми. Их память теряется, приводя, в худших случаях, к сбою из-за нехватки памяти, при том что часть памяти остается неиспользованной.
[x]. Эту проблему можно игнорировать в тех случаях, когда программа почти не создает недостижимых объектов или создает всего лишь несколько объектов, общий размер которых сравним с доступной памятью.
[x]. Во всех других случаях (динамические структуры данных, ограниченные ресурсы памяти) любое решение проблемы включает два компонента: обнаружение мертвых объектов и восстановление занятой ими памяти.
[x]. Каждая из задач может быть решена на одном из трех уровней: реализации языка, разработки компонентов, приложения.
[x]. Вменять в обязанность приложения обнаружение мертвых объектов и восстановление памяти - опасно и обременительно. Эта проблема должна решаться на уровне языка.
[x]. В некоторых специальных случаях можно управлять памятью на уровне компонентов. Обнаружение выполняется компонентами, восстановление памяти - компонентами, либо средствами, реализованными на уровне языка.
[x]. Подсчет ссылок не работает для циклических структур.
[x]. Общеприменимой техникой решения проблемы является сборка мусора. Ее накладные издержки приемлемо малы в нормальных ситуациях и, благодаря алгоритмам, работающим в стартстопном режиме, невидимы в нормальных интерактивных приложениях.
[x]. Сборка мусора поколений увеличивает эффективность алгоритма, используя тот факт, что недостижимыми становятся, в первую очередь, новые объекты.
[x]. Хороший механизм управления памятью должен возвращать неиспользуемую память не только текущему приложению, но и операционной системе.
[x]. Описанная схема реальной системы управления памятью предлагает комбинацию алгоритмов и способов, позволяющих разработчикам приложений производить настройку механизмов системы, в том числе позволяя включать и отключать сборку мусора в критических разделах приложения.
- Что происходит с объектами
- Несерьезный подход (тривиальный)
- Восстановление памяти: проблемы
- Удаление объектов, управляемое программистом
- Подход на уровне компонентов
- Автоматическое управление памятью
- Подсчет ссылок
- Сборка мусора
- Практические проблемы сборки мусора
- Среда с управлением памятью
- Ключевые концепции
- Библиографические заметки
- Упражнения