2013-09-19 3 views
9

Должен ли я явно устанавливать все переменные фрагмента в null в методе onDestroy (или onDetach), чтобы избежать утечек памяти? Или это не обязательно, и они будут GCed, когда фрагмент «уничтожен». Каковы наилучшие методы? Заранее спасибо!Нулевые переменные фрагмента на onDestroy()

ответ

6

Вам не о чем беспокоиться. ГК позаботится об этом. В Java вы почти наверняка должны ПОПЫТАТЬ, чтобы иметь утечку памяти (да, это возможно, но очень редко). Поэтому не беспокойтесь об этом. Если вы установите переменные в null, вы просто закончите тратить время на код, который вам не нужен, и добавит к обслуживанию по дороге. GC в Java отлично справляется с уничтожением переменных и объектов, на которые не ссылаются.

+1

У меня была утечка памяти в приложении для Android (через некоторое время из-за OutOfMemoryError она разбилась), где мне пришлось перебирать некоторые объекты и устанавливать ссылки на нуль, чтобы облегчить жизнь сборщику мусора. Но хорошее эмпирическое правило действительно: «Не исправить то, что не сломано». –

+0

Да, я знаю, что они были раньше, и это возможно, но это очень редко. Я согласен, но не понимаю, что не сломано :) – BlackHatSamurai

+0

Просто подсказка: для обнаружения утечек эта библиотека очень полезна https://github.com/square/leakcanary –

9

Просто надстройка,

  1. Если у вас есть какой-либо сервис, запущенный в вашем коде, остановить его.
  2. Если вы прошли регистрацию среди других трансляций или других лиц, не регистрируйте их
  3. Если у вас есть курсоры, откройте их.
  4. Если у вас есть растровые изображения, переработайте их.
+1

хорошее дополнение, спасибо! – user2758776

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