Что в точности понимается под восстановлением?
Что в точности понимается под восстановлением?
Прежде чем рассмотреть подсчет ссылок и сборку мусора, займемся одной технической деталью. В любой форме автоматического управления памятью возникает вопрос, - каков механизм утилизации объекта, определенного как недостижимый? Возможны две интерпретации:
[x]. Механизм может добавить память, занимаемую объектом, к постоянно поддерживаемому "списку свободных ячеек", в духе техники, использованной при рассмотрении подхода на уровне компонентов. Последующая инструкция создания ( create x... ) вначале обратится к этому списку для выделения памяти новому объекту. Только если этот список пуст или нет подходящих ячеек, инструкция запросит память у операционной системы. Этот подход может быть назван внутренний список свободной памяти.
[x]. Альтернативой является возвращение занимаемой объектом памяти операционной системе. На практике это решение включает в себя некоторые аспекты первого: для избежания переизбытка системных вызовов, утилизированные объекты могут временно храниться в списке, возвращаемого операционной системе при достижении определенного предела. Этот подход может быть назван реальным восстановлением.
Хотя возможны оба решения, долго работающие системы требуют реального восстановления. Причина очевидна. Рассмотрим приложение, которое никогда не останавливается. Оно создает объекты, большинство из которых становятся недостижимыми. Существует верхняя граница количества одновременно достижимых объектов, в то время как общее количество созданных с начала работы объектов не ограниченно. Тогда при подходе внутренних списков свободной памяти возможна ситуация, когда приложение постоянно запрашивает большую, чем нужно, память. В упражнении У9.1 этой лекции требуется создать образец программы, демонстрирующий такое поведение.
Было бы большим разочарованием иметь автоматическое управление памятью и оказаться в ситуации лондонской службы скорой помощи, - посягая без причин байт за байтом на доступную память, пока выполнение не выйдет за рамки памяти и не закончится катастрофой.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
5.4.3. Только Linux: указание файлового времени повышенной точности
5.4.3. Только Linux: указание файлового времени повышенной точности Ядра Linux 2.6 и более поздние предоставляют в struct stat три дополнительных поля. Они предусматривают точность файлового времени до наносекунд:st_atime_nsec Наносекундная компонента времени доступа к файлу.st_mtime_nsec
Типы данных фиксированной точности
Типы данных фиксированной точности Обозначения типов данных фиксированной точности получаются из обычных обозначений типов данных Win32, таких как DWORD или LONG, добавлением суффикса размера, как показано в табл. 16.1.Таблица 16.1. Типы данных фиксированной точности Тип
Типы данных, соответствующие точности указателей
Типы данных, соответствующие точности указателей Процитируем выдержку из статьи Microsoft под названием "The New Data Types" (доступна на Web-сайте компании Microsoft): "Точность этих типов данных отражает изменение точности указателей (то есть, они становятся 32-битовыми в коде Win32 и
Стремление к точности оценки
Стремление к точности оценки Разработчики тоже попадают в ловушку точности. Они знают, что должны выдать оценку системы, и часто думают, что их оценка должна быть точной. Ничего подобного!Во-первых, даже с идеальной информацией в ваших оценках будет наблюдаться огромный
Функции повышенной точности BCMath
Функции повышенной точности BCMath bcaddСложение двух чисел произвольной точности.Синтаксис:string bcadd(string left_operand, string right_operand [, int scale]);Эта функция возвращает строковое представление суммы двух параметров (left_operand + right_operand) с точностью, которая указана в необязательном параметре
Как в точности сохранить информацию, найденную на сайтах в Интернете
Как в точности сохранить информацию, найденную на сайтах в Интернете Периодически специалист конкурентной разведки сталкивается с необходимостью сохранения информации, найденной в Интернете. Это требуется, как правило, в целом ряде случаев.– Когда нет времени
7.1. Что понимается под администрированием системы
7.1. Что понимается под администрированием системы В ОС Linux существует корневая учетная запись root для привилегированного пользователя, которому разрешено делать все: читать, изменять и удалять любые файлы, создавать и разрушать файловые системы, запускать и прекращать
3.2.10. Неожиданная потеря точности
3.2.10. Неожиданная потеря точности Изменим в предыдущем примере тип переменной R с Single на Double. Значение, выводимое программой, станет 1.44327637948555E-16. Вполне логичный и предсказуемый результат, т. к. тип Double точнее, чем Single, и, следовательно, все вычисления имеют меньшую