производительность. Это печально, поскольку сам метод достаточно хорош, особенно при условии использования алгоритма Дейкстры (см. библиографическую ссылку).
По моему мнению (мой комментарий отражает надежду, а не научно установленный результат) параллельная сборка мусора - решение будущего, требующее кооперации с аппаратными средствами. Вместо того, чтобы воровать время у процессора, выполняющего приложение, сборка мусора должна управляться отдельным процессором, предназначенным только для решения этой задачи и сконструированным так, чтобы как можно меньше влиять на процессор(ы), работающие с приложением.
Эта идея требует изменения доминирующей аппаратной архитектуры и, вероятно, вряд ли найдет скорое применение. Я надеюсь, что ответом на иногда задаваемый вопрос -
'Какой тип аппаратного обеспечения наиболее пригоден для объектной технологии?' -
первым пунктом в списке пожеланий будет наличие отдельного процессора для сборки мусора.
Практические проблемы сборки мусора
Среда исполнения, обеспечивающая управление памятью, должна не только использовать хороший алгоритм сборки мусора, но и поддерживать несколько свойств, которые, хотя и не главные в теории управления памятью, являются существенными для практического использования среды.
Класс MEMORY
Наиболее удобный подход - представить эти свойства в виде класса, который назовем
| Аналогичный подход будет использован для механизма обработки исключений (класс |
Среди компонентов класса
Механизм освобождения
Другой важной процедурой класса
Обобщая сказанное, рассмотрим процедуру
При ручном управлении памятью проблем не возникает: достаточно включить вызов
Решение проблемы использует мощь объектной технологии и, в частности, наследование и переопределение. (Эта техника изучается в последующих лекциях, но ее применение здесь достаточно просто и понятно без детального ознакомления.) Класс
dispose is
- Действия, которые следует выполнить в случае утилизации;
- по умолчанию действия отсутствуют.
- Вызывается автоматически сборщиком мусора.
do
end
Тогда любой класс, требующий специальных действий всякий раз, когда сборщик утилизирует один из его экземпляров, должен переопределить процедуру
dispose is
- Действия, которые следует выполнить в случае утилизации:
- закрыть связанный файл, если он открыт.
- Вызывается автоматически сборщиком мусора.
do
if opened then
close
end
end
Комментарии описывают используемое правило: при утилизации объекта вызывается
