YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Russian subtitles

← 04-04 Memory_Leaks

04-04 Memory_Leaks

Get Embed Code
13 Languages

Showing Revision 4 created 02/02/2016 by QA_SP_1_RU.

  1. Одной из лучших черт языка Java в Android
    является то, что эта среда
  2. cама управляет памятью,
    и вам не нужно следить за тем,
  3. когда объекты создаются или уничтожаются.
  4. Однако, хотя это всё и хорошо,
  5. есть скрытые проблемы производительности,
    которые скрываются под поверхностью.
  6. Теперь запомните, динамическая память
    в среде выполнения Android
  7. разделена на пространства
    на основе типа выделения и того,
  8. как система сможет организовать выделения
    памяти для событий СМ наилучшим образом.
  9. Каждое такое пространство обладает
    своим зарезервированным объёмом памяти.
  10. Когда общий размер объекта в пространстве
    приближается к верхнему пределу,
  11. запускается событие сборки мусора,
    чтобы освободить пространство
  12. и удалить ненужные объекты.
  13. Такие события СМ обычно не влияют на
    производительность вашей системы.
  14. Однако, когда много таких событий
    запускается снова и снова,
  15. это может быстро снизить
    частоту смены кадров.
  16. Чем больше времени тратится на СМ,
  17. тем меньше его остаётся на другие задачи,
    вроде отрисовки или трансляции аудио.
  18. Одной из таких обычных ситуаций,
    с которой сталкиваются разработчики
  19. при инициации множества событий СМ,
    является утечка памяти.
  20. Утечки памяти — это объекты,
    которые приложение больше не использует,
  21. однако сборщик мусора не может распознать
    их как неиспользуемые.
  22. В результате
    они остаются в памяти постоянно,
  23. занимая ценное пространство, которое
    не освобождается для других объектов.
  24. По мере роста утечки памяти
  25. доступное пространство в поколениях памяти
    будет становиться всё меньше,
  26. что приведёт к тому,
    что события СМ будут запускаться всё чаще,
  27. пытаясь высвободить пространство для
    нормальной работы программы.
  28. Задача поиска и устранения утечек
    довольно не проста.
  29. Некоторые утечки очень легко создать,
  30. например, создавая циклические ссылки
    на неиспользуемые программой объекты.
  31. Другие утечки не так просты,
  32. вроде удержания дескрипторов на объектах
    загрузки классов в процессе их загрузки.
  33. В любом случае, стабильно работающее
    быстрое приложение должно следить
  34. и определять возможности возникновения
    утечек памяти.
  35. Я хочу сказать,
    что ваша программа будет работать
  36. на множестве разных устройств,
  37. и не все они будут иметь те же
    объёмы и параметры памяти.
  38. К счастью, в самом пакете Android SDK
    имеется простой инструмент,
  39. помогающий нам понять,
    где могут возникать утечки.
  40. Давайте рассмотрим его.