Туника под лосины
14.07.2016
Потоки приложения создают риск утечек памяти, препятствуя освобождению памяти сборщиком мусора, поскольку только после завершения потока все его объекты могут быть удалены, а выделенная им память освобождена. К потокам приложения относятся: U 1-ноток, связующие потоки и рабочие потоки, как рассказывалось в разделе «Потоки приложения ОС Android» в главе 3. Два последних типа потоков могут запускаться и завершаться во время выполнения приложения. Как следствие они удаляют ссылки на свои объекты при завершении, делая эти объекты недостижимыми, если только объекты не остаются достижимыми из другого корня сборки мусора. Время существования потоков двух указанных типов определяет вероятность утечек памяти. Хотите выглядеть стильно? Стоит туника под лосины купить.
Существуют две важные характеристики утечек памяти по отношению к потокам:
Потенциальная опасность (Potential risk) - опасность утечек памяти повышается прямо пропорционально времени существования потока и сохранения ссылок на его объекты. Коротко- живущие потоки редко становятся причиной утечек памяти, но потоки-долгожители, выполняющие длительные вычисления, обработку сообщений, разнообразные блокировки и т. и., могут хранить ссылки на объекты, которые, возможно, уже больше не нужны, как показано в разделе «Рассогласование жизненных циклов» ниже;
Размер утечки (Leak size) - приложение, в котором произошла утечка небольшого объёма памяти, вероятнее всего, будет работать нормально почти всегда, и утечка останется незамеченной. Но если размер утечки велик, например растровые изображения, иерархии представлений и т. п., нескольких подобных утечек достаточно, чтобы исчерпать всю память приложения.
В заключение следует отметить, что приложение должно минимизировать потенциальную опасность утечек памяти, а если утечки всё же возникают, их размер должен быть сведен к минимуму. С учётом этих двух характеристик в следующем разделе более подробно рассматриваются потоки и утечки памяти в ОС Android.
|