2016-10-17 2 views
0

Существует кнопка, которая может воспроизводить видео в нашем приложении с именем MediaCenter.apk. Недавно мы находили каждый раз, когда играем и выходим из видео. Виртуальный адрес процесса медиацентра увеличивается примерно на 5784 КБ (но физический адрес остается тем же), поэтому процесс выходит из строя в стресс-тесте видеоплеера, потому что тогда виртуального адреса недостаточно. Я использовал команду pmap -x pid для проверки использования виртуальной памяти в процессе медианцентра и нашел, что увеличенный 5784 КБ использовался /data/dalvik-cache/[email protected]@[email protected].Как найти утечку памяти в виртуальном адресе в Android?

65b29000 5784  8  0  0 r--p /data/dalvik-cache/[email protected]@[email protected] 

Я нашел размер файла /data/dalvik-cache/[email protected]@[email protected] был почти равен 5784KB. Казалось, что весь файл сопоставлен с памятью в процессе медиацентра. Но как я могу узнать, на каком этапе файл был отображен в памяти в процессе? И как узнать, почему виртуальный адрес не вышел после выхода видеоплеера?

ответ

0

Инструмент hpf для Android дает возможность использования вашего приложения в памяти. Ниже ссылка, https://developer.android.com/studio/profile/am-hprof.html

Чтобы узнать максимально кучного разрешено на устройстве, добавляя ниже код в YOUT App.

Runtime.getRuntime().maxMemory(); 
+0

Спасибо. Но, похоже, hprof может использоваться только для анализа использования физической памяти приложением. В моем случае происходит утечка памяти в виртуальном адресе, а не в физическом адресе. – tiger20081015

+0

В моем понимании виртуальный адрес - это пространство кучи (использование ОЗУ). Физическая память имеет только размер apk в файловой системе (Nand mem). hprof делает анализ кучи. –

+0

Извините, здесь виртуальный адрес, который я имею в виду, - это виртуальный адрес процесса Linux, физический адрес - ОЗУ. – tiger20081015