2015-06-17 1 views
1

Мое приложение работает нормально (т. Е. Никаких сбоев). Во время тестирования я изучал использование памяти. Я использую 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:

path2gc

За последний день я раздел активность открытия и фрагмент моего приложения, чтобы обнажить кости, удаление все открытия и ссылки на растровые изображения, удаление меню, обслуживание, все. Осталось только одно действие, содержащее 1 фрагмент. Фрагмент имеет ListView, причем каждый элемент списка имеет простой TextView. Нет растровых изображений. Я могу показать код в более позднем редактировании на этот вопрос, если это необходимо.

Я тестирую это урезанное приложение на телефоне и планшете. Я устанавливаю приложение, запускаю его, просматриваю список, отображаемый первым фрагментом, а затем выхожу. Через DDMS я вызываю GC, а затем дамп кучи и исследую его в анализаторе памяти Eclipse. Как для телефона, так и для планшета я вижу «потенциальную» утечку памяти.

В моем тестовом телефоне, использующем ROM cynogenmod, есть опция настройки производительности «Разрешить очистку активов» (см. http://pocketnow.com/2012/12/10/5-nexus-4-speed-tips#toc-5). Когда я включаю эту функцию, моя потенциальная утечка памяти исчезает. Это заставляет меня думать, что в моем приложении нет проблем, но его поведение в системе, которое я не понимаю.

Некоторые вопросы:

  1. Это, вероятно, утечка памяти в моем приложении?
  2. Если мое тестовое приложение не использует растровые изображения или чертежи, почему нужно выделить память для растрового изображения? Что я могу проверить?
  3. Есть ли у вас какие-либо слова мудрости относительно интерпретации, какие потенциальные утечки памяти, о которых сообщает анализатор памяти Eclipse, можно игнорировать?

Заранее спасибо. Я исхожу из встроенного в реальном времени фона C, поэтому очень нервничайте, когда я вижу утечки памяти!

ответ

1

Это растровое изображение системы, связанные и не утечка памяти в App. Я пришел к такому выводу через должности Android EdgeEffect appears to allocate a 1 meg bitmap и Strange Bitmap using 1 Mb of Heap.

Для всех, кто это читает, я хотел бы предложить вашему вниманию еще одно очень полезное сообщение, в котором показано, как просматривать растровые изображения, на которые указывает инструмент анализатора Eclipse Memory Analyzer. Это может действительно помочь в отладке. См. MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump

0

Все представления генерируют растровые изображения самих кешей. Вероятно, это утечка памяти. Это происходит, когда есть частые изменения компоновки на вид. Вы могли бы попытаться отключить кэш, чтобы увидеть, если он решает проблему:

view.setDrawingCacheEnabled(false); 
Смежные вопросы