RUS  ENG
Полная версия
ЖУРНАЛЫ // Труды института системного программирования РАН // Архив

Труды ИСП РАН, 2015, том 27, выпуск 2, страницы 23–38 (Mi tisp120)

Эта публикация цитируется в 1 статье

Подход к проведению динамического анализа Java-программ методом модификации виртуальной машины Java

М. К. Ермаков, С. П. Вартанов

Факультет вычислительной математики и кибернетики, Московский государственный университет им. М.В. Ломоносова

Аннотация: На настоящий момент при разработке программного обеспечения активно используются методы автоматического статического и динамического анализа программ. Так, динамический анализ предоставляет возможности обнаруживать дефекты и ошибки проектирования, проявляющиеся во время выполнения программ, требуя минимального участия эксперта. При проведении динамического анализа распространены два подхода к исследованию выполнения программы — внешний мониторинг, осуществляющийся системными средствами и отладчиками, и инструментация программного кода — модификация и внедрение дополнительной функциональности. При анализе исполняемого кода во внутреннем представлении, обрабатываемого интерпретатором или виртуальной машиной, становиться возможно применение третьего подхода — мониторинга средствами самого интерпретатора или виртуальной машины. В данной статье рассмотрены возможности подобного подхода на примере проведения анализа использования динамической памяти в виртуальной машине Dalvik операционной системы Android.
Работа над представленным методом обусловлена ограничениями виртуальной машины Dalvik, приводящими к невозможности использования большого количества существующих инструментов профилирования памяти. В данной статье рассмотрены непосредственные модификации виртуальной машины Dalvik, включающие расширение поддержки стандартного протокола Java Debug Wire Protocol, для отслеживания событий выделения, освобождения и доступа к памяти. Дополнительно приведён обзор возможностей разработанного отладчика, обеспечивающего регистрацию данных событий в режиме реального времени для последующей обработки. Представленный отладчик, основанный на существующем средстве Dalvik Debug Monitor, позволяет проводить работу одновременно с несколькими активными процессами и обработку результатов множественных запусков. В рамках практических экспериментов были рассмотрен набор стандартных пользовательских приложений Android, выполняющихся на модифицированной версии виртуальной машины Dalvik под контролем разработанного отладчика. Эксперименты позволили выявить некоторые базовые особенности работы с памятью, включающие активное использование массивов примитивных типов языка Java и неэффективность использования памяти, выделяемой для объектов классов, отвечающих за отображение элементов графического интерфейса приложений.

Ключевые слова: динамический анализ программ, профилирование памяти, Java, Android.

DOI: 10.15514/ISPRAS-2015-27(2)-2



Реферативные базы данных:


© МИАН, 2024