Android: Eclipse MAT не отображает все объекты моего приложения - PullRequest
2 голосов
/ 05 февраля 2010

Я создал файл hprof, вставив оператор Debug.dumpHprofData("/sdcard/myapp.hprof"); в код моего приложения; Затем я запустил файл hprof через hprof-conv и открыл преобразованный файл в Eclipse.

Следуя совету MAT "Шпаргалка", я получил анализ использования памяти моим приложением, перейдя в раздел "Leak Identification -> Component Report", введя com.prepbgg. * "И нажав Finish.

Я знаю, что мое приложение потребляет большие объемы памяти: в частности, на этапе, когда я вызывал dumpHprofData, оно имело растровый объект размером в один мегапиксель и холст, который должен занимать несколько сотен КБ. (Я также подозреваю, что из-за утечки значительного объема памяти происходит значительное снижение производительности после нескольких поворотов экрана.)

Однако в отчете о компонентах для com.prepbgg. * Общий объем памяти составляет всего 38,7 КБ. Гистограмма показывает для android.graphics.Bitmap (предположительно, это общее количество всех приложений, включая мое) 404 объекта и Shallow Heap 12 928. Это 12 928 байт?

Очевидно, что мое приложение потребляет более 38,7 КБ, а растровое изображение - более 12 928 байт. Куда я иду не так? Как я могу увидеть общую память, занятую моим приложением?

1 Ответ

1 голос
/ 06 февраля 2010

Большая часть места для растрового изображения будет в собственной куче. см. источник для Bitmap: он имеет семь полей. Предположим, что каждое поле составляет четыре байта (почти наверняка для ссылки и целого числа и возможно для логических значений), добавляет дополнительные четыре байта для заголовка объекта и:

(7*4 + 4) * 404 = 12928

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

Вы можете спросить, сколько вещей выделено: http://developer.android.com/reference/android/os/Debug.html#getNativeHeapAllocatedSize()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...