Мое приложение работает нормально (т. Е. Никаких сбоев). Во время тестирования я изучал использование памяти. Я использую DDMS для Android Studio (AI-141.2006197) для вывода файла Dump HPROF, а затем открываю его в Eclipse Memory Analyzer. Этот инструмент описывает подозреваемую утечку:Потенциальная утечка памяти в растровом файле, полученная с помощью инструментов анализа кучи, но без растровых изображений, используемых приложением
One instance of "android.graphics.Bitmap" loaded by "<system class loader>" occupies
2,536,984 (40.81%) bytes. The memory is accumulated in one instance of "byte[]"
loaded by "<system class loader>".
Keywords
byte[]
android.graphics.Bitmap
Некоторые больше информации из dominator_tree:
За последний день я раздел активность открытия и фрагмент моего приложения, чтобы обнажить кости, удаление все открытия и ссылки на растровые изображения, удаление меню, обслуживание, все. Осталось только одно действие, содержащее 1 фрагмент. Фрагмент имеет ListView, причем каждый элемент списка имеет простой TextView. Нет растровых изображений. Я могу показать код в более позднем редактировании на этот вопрос, если это необходимо.
Я тестирую это урезанное приложение на телефоне и планшете. Я устанавливаю приложение, запускаю его, просматриваю список, отображаемый первым фрагментом, а затем выхожу. Через DDMS я вызываю GC, а затем дамп кучи и исследую его в анализаторе памяти Eclipse. Как для телефона, так и для планшета я вижу «потенциальную» утечку памяти.
В моем тестовом телефоне, использующем ROM cynogenmod, есть опция настройки производительности «Разрешить очистку активов» (см. http://pocketnow.com/2012/12/10/5-nexus-4-speed-tips#toc-5). Когда я включаю эту функцию, моя потенциальная утечка памяти исчезает. Это заставляет меня думать, что в моем приложении нет проблем, но его поведение в системе, которое я не понимаю.
Некоторые вопросы:
- Это, вероятно, утечка памяти в моем приложении?
- Если мое тестовое приложение не использует растровые изображения или чертежи, почему нужно выделить память для растрового изображения? Что я могу проверить?
- Есть ли у вас какие-либо слова мудрости относительно интерпретации, какие потенциальные утечки памяти, о которых сообщает анализатор памяти Eclipse, можно игнорировать?
Заранее спасибо. Я исхожу из встроенного в реальном времени фона C, поэтому очень нервничайте, когда я вижу утечки памяти!