Распределение памяти для одноэлементного шаблона - PullRequest
0 голосов
/ 14 февраля 2010

если мы используем шаблон синглтона в нашем веб-приложении, когда освобождается указанная память, выделенная нашему классу?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2010

Технический ответ: память освобождается, когда домен приложения выгружается или процесс завершается.

Лучший ответ: память освобождается всякий раз, когда ГК решает освободить ее. Вы не знаете и не должны заботиться. Если ваш Singleton отслеживает неуправляемые ресурсы (т. Е. Файловые дескрипторы, дескрипторы GDI, что-либо отличное , кроме памяти), и вам необходимо освободить их в любое время, пока ваше приложение все еще "работает", тогда Singleton нуждается предоставить необходимые методы для этого.

1 голос
/ 14 февраля 2010

Синглтоны, скорее всего, реализованы с использованием переменной static. Конечные static переменные не являются сборщиком мусора (если только их загрузчик классов не является сборщиком мусора).

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

Однако можно установить для переменной static значение null. Тогда я думаю, что это будет сборщик мусора.

Когда вы останавливаете свой контейнер (IIS или что-то еще), память освобождается, а при перезапуске экземпляр Singleton создается снова.

P.S. Похоже, я говорю о Java, но это должно быть почти то же самое в C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...