ОСВМ. Операционная система Android корпорации Google
DDMS (Dalvik Debug Monitoring Service)
Используйте панель DDMS (Служба для отслеживания процесса отладки в Dalvik) для отслеживания и контроля за виртуальными машинами Dalvik. Это мощный отладочный инструмент, позволяющий изучать активные процессы, просматривать стек и кучу, мониторить и останавливать рабочие потоки, исследовать файловую систему подключенного устройства.
Возможности
Управление задачами
Управление файлами
Взаимодействие с эмулятором
Журналирование (журнальные записи LogCat)
Создание скриншотов (захват изображения с экрана эмулятора)
При использовании ADT утилита DDMS интегрируется в Eclipse и доступна из соответствующей панели (Window→Open Perspective→DDMS). В противном случае вы можете запускать DDMS из командной строки - ее исполняемый файл находится в папке Android SDK /tools.
Управление задачами
На панели Devices перспективы DDMS можно увидеть список эмуляторов и телефонов, подключенных в текущий момент. Можно выбрать отдельные экземпляры, просмотреть текущие процессы и потоки. Чтобы просмотреть поток, щелкните мышью по нужному процессу устройства, затем на кнопке обновления потока.
Обзор файловой системы
Для просмотра файлов и папок в эмуляторе или на устройстве вы можете использовать панель File Explorer. Вы можете копировать файлы между системой Android и вашим компьютером с помощью кнопок перемещения. Также можно удалять файлы. При этом на экран не выводится сообщение о подверждении операции и отмены операции, поэтому будьте осторожны.
Взаимодействие с эмулятором
Панель Emulator Control позволяет выполнять голосовые вызовы, отправку и прием SMS, запрос геолокационных координат.
Входящие голосовых вызовов являются имитацией. Это не настоящий звонок, никакие данные не передаются.
Threads
Вы можете анализировать информацию по каждому процессу и его потокам. Достаточно выделить необходимый процесс нашего приложения и нажать кнопку Update Threads.
Справа вы можете увидеть вкладку и работающие потоки выбранного процесса. По каждому потоку доступна следующая информация:
Id - уникальный идентификатор потока, назначенный виртуальной машиной. Если рядом символ звездочки, то это демон-поток;
Tid - идентификатор потока в Linux. Главный поток процесса будет содержать id процесса;
Status - статус потока на данный момент;
utime - общее время, которое поток потратил на выполнение пользовательского кода. Единицы измерения jiffies, длительность которой определяется системой и обычно составляет 10ms;
stime - время, потраченное на выполнение системного кода. Единицы измерения также jiffies;
Name - имя потока. Не забывайте давать осмысленные имена при создании потока.
Таким образом, мы можем понять, какой поток больше всего расходует процессорного времени. Тут следует сказать несколько слов о некоторых потоках.
GC - это поток сборщика мусора. До Android 3 он недоступен для просмотра в потоках.
JDWP (Java Debug Wire Protocol) - протокол взаимодействия между дебагером и виртуальной машиной.
Это собственно его поток. Не стоит беспокоиться его появлению, он создается только при отладке приложения.
Вы также можете наблюдать за вашими действующими потоками и выявить утечку памяти, если какой-то из ваших потоков присутствует в списке в двух экземплярах (естественно, если так не задумано). Допустим, вы повернули экран, но при этом забыли грамотно обработать закрытие потока, после чего создали его копию. В списке вы увидите оба таких потока с одинаковыми именами.
Heap
Инструмент для отладки кучи. Следует выбрать необходимый процесс и выбрать кнопку Update Heap.
Вам будет доступна информация о распределении динамической памяти в нашем процессе. Запускаем сборку мусора (Cause GC) и смотрим что осталось.
Heap size - это общий размер кучи, который выделил Android под данный процесс;
Allocated - используемая память;
Free - свободная память;
Used - используемая память в процентах;
Objects - общее кол-во объектов, которые составляют allocated размер
Allocation tracker
Позволяет отследить, какие объекты были созданы у выбранного процесса за выбранный промежуток времени, где можно посмотреть какие объекты создавались чаще, их размер, поток который их создавал и стек вызова.
Нажимаем на кнопку Start tracking, после чего производим действия с приложением, которые хотим проанализировать, далее нажимаем кнопку Get Allocations. Появится список объектов, которые были созданы за этот период времени.
Доступная информация:
Alloc Order - номер созданного объекта;
Allocation Size - размер объекта;
Allocated Class - тип объекта;
Thread Id - идентификатор потока, назначенный виртуальной машиной (не путать с Tid);
Allocated in - класс и метод, в котором был создан объект.
Вы можете выбрать любой объект и посмотреть весь его стек вызова. Таким образом, можно получить информацию о том, где создаются объекты, как часто, их размер и принять соответствующие меры. Создание объекта - это дорогостоящая операция и её следует избегать.
Start Method Profiling
Данный инструмент позволяет анализировать время, которое было затрачено методами на свою работу. Тем самым, мы можем понять узкие места в нашем коде и оптимизировать их.
После завершения работы stopMethodTracing, trace будет доступен в /sdcard/trace_name.trace. Это бывает очень полезно, если мы хотим оптимизировать определенные участки кода, либо к примеру улучшить скорость старта приложения.
Знаете ли Вы, как разрешается парадокс Ольберса? (Фотометрический парадокс, парадокс Ольберса - это один из парадоксов космологии, заключающийся в том, что во Вселенной, равномерно заполненной звёздами, яркость неба (в том числе ночного) должна быть примерно равна яркости солнечного диска. Это должно иметь место потому, что по любому направлению неба луч зрения рано или поздно упрется в поверхность звезды. Иными словами парадос Ольберса заключается в том, что если Вселенная бесконечна, то черного неба мы не увидим, так как излучение дальних звезд будет суммироваться с излучением ближних, и небо должно иметь среднюю температуру фотосфер звезд. При поглощении света межзвездным веществом, оно будет разогреваться до температуры звездных фотосфер и излучать также ярко, как звезды. Однако в дело вступает явление "усталости света", открытое Эдвином Хабблом, который показал, что чем дальше от нас расположена галактика, тем больше становится красным свет ее излучения, то есть фотоны как бы "устают", отдают свою энергию межзвездной среде. На очень больших расстояниях галактики видны только в радиодиапазоне, так как их свет вовсе потерял энергию идя через бескрайние просторы Вселенной. Подробнее читайте в FAQ по эфирной физике.