ОСВМ. Операционная система 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. Это бывает очень полезно, если мы хотим оптимизировать определенные участки кода, либо к примеру улучшить скорость старта приложения.
Знаете ли Вы, что такое "усталость света"? Усталость света, анг. tired light - это явление потери энергии квантом электромагнитного излучения при прохождении космических расстояний, то же самое, что эффект красного смещения спектра далеких галактик, обнаруженный Эдвином Хабблом в 1926 г. На самом деле кванты света, проходя миллиарды световых лет, отдают свою энергию эфиру, "пустому пространству", так как он является реальной физической средой - носителем электромагнитных колебаний с ненулевой вязкостью или трением, и, следовательно, колебания в этой среде должны затухать с расходом энергии на трение. Трение это чрезвычайно мало, а потому эффект "старения света" или "красное смещение Хаббла" обнаруживается лишь на межгалактических расстояниях. Таким образом, свет далеких звезд не суммируется со светом ближних. Далекие звезды становятся красными, а совсем далекие уходят в радиодиапазон и перестают быть видимыми вообще. Это реально наблюдаемое явление астрономии глубокого космоса. Подробнее читайте в FAQ по эфирной физике.