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

         

Сбор мусора с помощью счетчика ссылок



Сбор мусора с помощью счетчика ссылок

Счетчик ссылок выполняет разумную функцию, зачастую обеспечивая детерминированное завершение. Но в ряде совсем уж редких случаев, одним из примеров которых служат циклы, счетчик ссылок не может выполнять эту функцию. Фактически при прямом подсчете ссылок никогда не собираются объекты, задействованные в циклах. Большинство из нас, набив достаточно шишек, освоили методики, позволяющие бороться с этим вручную. Но такие методики являются нежелательным источником ошибок. К тому же, начав размещать объекты по разным потокам, вы рискуете получить реентерабельность потоков и, таким образом, внести в свою программу изрядную долю недетерминированности. Некоторые будут доказывать, что коль скоро вы передаете ссылку на объект за пределы сферы прямого контроля тесно связанной программы, вы теряете возможность детерминированного завершения, поскольку вы не имеете ни малейшего понятия, когда этот "далекий" код освободит переданную ссылку, и сделает ли он это вообще. Другие считают, что сложным системам, зависимым от порядка завершения сложных графов объектов, изначально присуща хрупкость конструкции и, весьма вероятно, это приведет к существенным проблемам в сопровождении по мере эволюции кода.



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