Обнаружение утечек памяти в коде Android JNI

Как обнаружить утечки памяти в коде Android JNI? Я использую Froyo

 Vinay22 сент. 2010 г., 13:33
Я ищу утечки памяти нативный код
 Praveen22 сент. 2010 г., 13:10
возможно дублирование:stackoverflow.com/questions/2851483/...

Ответы на вопрос(3)

Обновление 2017 года: Валгринд доступен для Android. Встроенная функция отладки malloc была значительно расширена вAndroid Nи весьма полезен для поиска утечек памяти. Вам может понадобиться_exit() приложение для запуска дампа.

Функция DDMS, описанная ниже, в настоящее время получаеткраткое упоминание в официальных документах.

Существует экспериментальная, неподдерживаемая функция, которой вы можете воспользоваться.

В вашем файле конфигурации DDMS (например,~/.android/ddms.cfg в Linux), добавьте "native = true". Это активирует вкладку Native Heap.

Затем включите отслеживание выделения собственной кучи на устройстве и перезапустите каркас приложения:

% adb shell setprop libc.debug.malloc 1 
% adb shell stop 
% adb shell start 

(Обратите внимание, что для этого требуется root. Обратите внимание также, что это относится только к последним версиям; в более старых версиях вам также необходимо было вручную заменить libc.so на libc_debug.so в / system / lib на устройстве.)

Вы можете определить, правильно ли вы настроили устройство, просмотрев вывод logcat, выполнив простую команду ("adb shell ls"). Если ты видишь:

I/libc    ( 4847): ls using MALLOC_DEBUG = 1 (leak checker)

тогда вы знаете, что включили его.

Теперь вы можете использовать функции вкладки «Собственная куча» для получения снимков использования памяти кучи.

DDMS автоматически извлечет символы из.../symbols/system/lib общие библиотеки в вашем исходном дереве Android. Конечно, для этого требуется, чтобы у вас было полное дерево исходников Android, а на вашем устройстве выполнялся код, созданный из него. Если нет, трассировки стека не могут быть декодированы в имена символов, что снижает полезность функции.

 Vinay23 сент. 2010 г., 05:52
Я сделал это, но мы не можем подтвердить, что это утечка памяти, она просто отображает распределение памяти.
 tomwhipple15 авг. 2011 г., 21:07
Пожалуйста, определите «последние выпуски».
 fadden23 сент. 2010 г., 22:52
Правильно. Вам нужно следить за распределением со временем. Если они непрерывно растут, вы узнаете, откуда идет рост, по трассировке стека и отследите его оттуда. Для Android пока нет valgrind.

после чего отобразится место сохраненной памяти.

 pkanev29 авг. 2017 г., 13:48
Этот ответ не дает никакой ценности.

Я также использовал в JB, JB +, KITKAT и Lollipop. Это очень хороший инструмент в Android, чтобы найти утечки.

 Willie Cheng06 мая 2016 г., 04:56
может быть, вы можете поделиться URL, спасибо

Ваш ответ на вопрос