VYakushev
@VYakushev
Разработчик Android в Nowtaxi

Может ли сборщик мусора удалить Singleton?

Есть Singleton-класс, который отвечает за получение координат. В данном классе есть методы стартующие и отключающие подписку на изменение координат. Может ли сборщик мусора удалить из памяти Singleton-класс из-за того, что на него нет ссылок в других активных классах?
  • Вопрос задан
  • 3720 просмотров
Решения вопроса 1
@kavdeev
да может если на класс или его инстанс нет внешних ссылок тк класс это тоже объект
проблема решается созданием внешней ссылки или параметром jvm -Xnoclassgc
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
leventov
@leventov
Я не знаю способов реализации Singleton в Яве, при которых так или иначе не используется статическое поле с экземпляром класса (во всяком случае, адекватных способов). А статическое поле - это всегда корень для GC, будь оно приватное или нет. Поэтому ответ: нет, не может.
Ответ написан
@Artyushov
Во-первых, если класс загружен в виртуальную машину, то статическое поле из него никуда пропасть не сможет.

Во-вторых, зачем вам вообще об этом знать? Ситуация, когда вам в коде нужны какие-то данные, но они оказались собраны GC, невозможны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы