Как отслеживать и отлаживать выделение внешней памяти в Android?

#android #memory #java-native-interface #dalvik

#Android #память #java-native-интерфейс #dalvik

Вопрос:

Я пытаюсь устранить проблему с памятью в приложении Android.

Я убежден, что утечка памяти происходит не во внутренней куче, поскольку я тщательно исследовал эту возможность с помощью инструмента анализатора памяти и средства отслеживания кучи / распределения в DDMS.

Я считаю, что для поиска источника проблемы мне нужно посмотреть на распределение во внешней куче, а не во внутренней куче.

10-05 18:17:06.221: DEBUG / dalvikvm (2559): GC_CONCURRENT освободил 1137 КБ, 47% свободных 4556 КБ / 8455 КБ, внешние 1625 КБ / 2137 КБ, приостановлено 6 мс 4 мс

Внешняя цифра — это та, которая выходит из-под контроля перед сбоем.

Есть ли способ сделать это?

Приветствия.

Ответ №1:

Вы использовали инструмент MAT? Это очень полезно.

http://www.eclipse.org/mat/

Если у вас возникли проблемы с памятью из-за растровых изображений, загляните в WeakReference или обязательно вызовите recycle() для своих растровых изображений, когда закончите.

Комментарии:

1. Я изучил MAT, однако он анализирует только распределение данных, выполненное во внутренней куче. Есть ли способ указать этому инструменту на внешнюю кучу? Спасибо.

2. Насколько я знаю, нет. НО большинство проблемных распределений — это Bitmap (которые выделяются из кучи). Ваше приложение вообще работает с Bitmap?