Вопрос назрел случайно, когда перешел с Eclipse на AS. Компилятор пишет предупреждение (указал в топике). Но меня это смущает. Смысл вот в чем. Есть некий класс, я получаю его экземпляр. Использую его методы. После использования переменную, которая получала этот экземпляр обнуляю (=null).
MyPreferences pref = new MyPreferences();
pref.loaddata();
...использую методы класса MyPreferences
pref = null;
Вот на последней строчке AS предупреждает. Но раньше я читал такую фразу, что "Android не любит утечки ресурсов поэтому освобождаем переменную....и присваивали ей null".
Помогите разобраться как правильно писать... спасибо.
Ответ
В том и интерес области видимости и управления памятью в JVM.
К примеру, Вы выполняете в своем методе все вышеописанное, после выполнения кода и выхода из метода, ссылки на объект теряются и через время он уничтожается сборщиком мусора.
По сути, Вы дописываете лишнее, на что AS и указывает.
Совсем другая история, если MyPreferences pref Вы укажете вне метода, переменной класса. Вот тогда pref = null; действительно необходимо для обнуления ссылок для последующего уничтожения объекта сборщиком мусора.
private void myMethod() {
MyPreferences pref = new MyPreferences();
pref.loaddata();
...использую методы класса MyPreferences
}
против
public class MyClass extends NotMyClass {
MyPreferences pref;
...
private void myMethod() {
pref = new MyPreferences();
pref.loaddata();
...использую методы класса MyPreferences
pref=null;
}
}
Комментариев нет:
Отправить комментарий