Принципы объектно-ориентированного программирования

         

Детерминированное завершение



Детерминированное завершение

От истории перейдем к детерминированному завершению. Как только определено, что объект более не используется, код его завершения освобождает удерживаемые объектом ссылки на другие объекты. Затем этот каскад процесса завершения естественным образом проходит через граф объектов, начиная с верхнего объекта. В идеале это должно работать как в случае совместно, так и индивидуально используемых объектов.

Заметьте: никаких обещаний насчет времени не дается. Обнаружив, что ссылка больше не используется, поток GC не будет предпринимать больше никаких действий, пока не выполнится код завершения объекта. Однако при обработке всегда может случиться переключение контекста процессора. Это значит, что, с точки зрения приложения, до завершения данного этапа может пройти неопределенно долгое время. Как отмечено выше, очень часто приложению могут быть небезразличны своевременность и порядок исполнения кода завершения. Эти ситуации в общем случае связаны с ресурсами, за которые идет интенсивная конкуренция. Ниже приводятся некоторые примеры таких ресурсов, которые объект должен освободить, как только он больше не используется.



  • Содержание раздела