![]() |
|
||||||||||
|
|||||
|
2TanaTiX
Обнаруживается стандартными средствами: трейсами, дебаггером, профайлером. Просто если выставлена мягкая ссылка - ты нажмешь run gc в профайлере и не увидишь что от чего-то не отписался. А использовать или не использовать мягкие ссылки: 1. Eсть ситуации, в которых отследить время, в которое надо удалить объект из словаря или отписать от события определить очень тяжело (в сущности надо будет релизовать маленкий GC на базе подсчета ссылок). Тут выбора и нет. Например видел ресурсный движок, который не заморачивался с выгрузкой ресурсов, а просто хранил все в Dictionary с мягкими ссылками (да, доверия к такой системе нет - а вдруг он через 1 секунду удалит, а нам ресурс опять потребовался - и опять грузи, т.е. нельзя настроить чтобы удалял через 30 секунд, например, но работала). Еще где-то в ASwing в каком-то менеджере компоненты пихаются в Dictionary со слабыми сылками. Там можно было от этого избавиться, но пришлось бы использовать совсем другой подход, т.е. можно считать у них не было выбора. 2. Большинство ситуаций не такие, в них ясно, когда отписывать объект. И тут просто 2 полюса: - отписаться, но перестраховаться слабыми ссылками - отписаться не перестраховываясь - если уж что-то идет не так - то это надо видеть Просто тяготею больше ко 2-му полюсу и все. 3. Не отписываться и везде слабых ссылок понавтыкать. Чревато нагрузкой на проц. |
|
|||||
|
Цитата:
1) Как-то не было у меня таких ситуаций и таких структур проектов... 2) У нас разные полюса Соглашусь, что оба имеют право на жизнь.3) Это даже не вариант.
__________________
Ну все, теперь Забава м-о-я. Гы-гы, а корабль мой! |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|