2017-01-20 15 views
-1

Я новичок в мире android. Я разрабатываю приложение для Android, где мне нужно использовать некоторое статическое поле и некоторое конечное статическое поле. Как озабоченность в связи с выполнением application.i сделали поиск по этой темеЧто будет влиять на статическую переменную или конечную статическую varibale на константу

1.Что будет влияние на память и производительность

2.КАК сбора мусора работу при обращении со статическим или конечным статическим полем.

  1. Когда эти поля доступны для сбора мусора.

ответ

1

1) Не существует штрафа за переменную, являющуюся статичной. Он будет иметь тот же объем памяти, что и статическая переменная.

2/3) Переменная в статическом поле не может быть собрана в мусор, если сам класс не выкинут из памяти. На практике это никогда не произойдет. Чтобы его собрать, вам нужно будет переписать переменную на другое значение (которое тогда было бы невостребовано) или null.

Статические конечные поля - это константы. Они не могут быть перезаписаны, поэтому они никогда не будут собраны.

+0

Не все переменные 'static final' являются константами. Они должны быть инициализированы с постоянным выражением, которое является константой, для JLS. Это означает, что они должны быть примитивными или «String's». Они компилируются в код как литералы. Не все непостоянные «статические финалы» можно рассматривать как константы; они могут быть изменчивыми. Нестатистическими переменными могут быть константы, будь то члены или локальные. Только константы и «конечные» переменные для неизменяемых объектов должны рассматриваться как константы, включая получение имен во всех заглавных строках с символами подчеркивания. –

+0

Будучи изменчивым, это не означает, что они не являются постоянными. ССЫЛКИ постоянны. Конечно, данные, которые он ссылается, могут быть изменены, если класс позволяет это. Совершенно другая концепция. Точно так же, как указатель const в C++ может все еще иметь данные, указанные при изменении, если его имя не указано const * const –

+0

@LewBloch. Для этого я сделал отдельный класс для хранения всех статических конечных полей и инициализации с помощью константного выражения, т.е. public static final String CUSTOMER_EDIT_USER_ID = "CUSTOMER_EDIT_USER_ID"; , Мой вопрос состоял в том, как это повлияет на память и соответствует производительности приложения и когда статическое конечное или статическое поле доступно для сбора мусора. –

 Смежные вопросы

  • Нет связанных вопросов^_^