Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Почему так популярна ленивая инициализация? (http://forums.kuban.ru/f1024/pochemu_tak_populyarna_lenivaya_inicializaciya-8556184.html)

Добрых дел мастер 14.12.2017 22:50

Почему так популярна ленивая инициализация?
 
Вот читал очередную статью на хабре - и никак не пойму: почему все с ней так носятся? Речь о серверных приложениях.
Ведь этот синглтон все равно будет проинициализирован. Все равно память будет сожрана и не возвращена. И это произойдет в самое неудобное время - во время запроса пользователя. В результате, падает предсказуемость поведения приложения.
Плюс, дополнительные сложности с мультитредингом хоть и немного, но влияющие на производительность.

Bambuka 18.12.2017 17:52

а у вас как с практикой?

Добрых дел мастер 18.12.2017 19:42

нормально

wayerr 19.12.2017 23:50

[quote=Добрых дел мастер;45109097] и немного, но влияющие на производительность. [/quote]

В зависимости от реализации настолько немного, что о них можно вообще не думать. Тем более в веб приложении на спринге.

Добрых дел мастер 20.12.2017 09:45

Так а зачем это вообще делать?

wayerr 20.12.2017 13:14

надо смотреть в каждом конкретном случае 8)

когда я делал то для быстрого старта, но это был десктоп, там актуально. А сейчас я всякой хернёй занимаюсь, и если буду руками делать синглтоны в спринге то на меня странно посмотрят.

Добрых дел мастер 20.12.2017 21:58

просто все случаи, когда я видел использование ленивой инициализации, были похожи на ошибки в архитектуре.
Если это какой-нибудь DTO - это выглядит, как будто я не понимаю, когда загружаются мои данные. Лучше присобачить какую-нибудь очередь и producer-consumer: и данные будут подгружаться заранее, и их количество будет управляемо.

В случае с вечноживущими объектами - вообще не понимаю зачем. Лучше при старте приложения все создать - и быстрее, и безопаснее (вдруг там ошибка и оно упадет при создании).

Там просто статья была про синглтоны. Но она навела на мысль, а зачем вообще этот lazy в таких количествах.


Текущее время: 16:11. Часовой пояс GMT +3.