'

Программная инженерия

Понравилась презентация – покажи это...





Слайд 0

Программная инженерия Дмитриев Андрей Владиславович andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008


Слайд 1

Обнаружение узких мест и анализ утечек памяти Дмитриев Андрей Владиславович andrei-dmitriev@yandex.ru http://in4mix2006.narod.ru/ 2008


Слайд 2

Качество программы Качество можно оценивать по следующим критериям: Результативность – решает ли программа поставленную задачу? Быстродействие – насколько быстро программа решает задачу? Надежность – насколько можно доверять результатам работы программы? Ресурсоемкость – как много ресурсов нужно программе для решения задачи? …


Слайд 3

Программа Определения. Возможности профилировщика. Запуск. Мониторинг приложения. Анализ производительности. Анализ использования памяти.


Слайд 4

Определения (1/2) Куча (heap) – область памяти, где размещаются объекты, создаваемые виртуальной машиной. Сборка мусора – удаление объектов, которые больше не используются. Утечка памяти – объект, который более не используется, но, тем не менее, не может быть удален сборщиком мусора.


Слайд 5

Определения (2/2) Собственное время исполнения – время, необходимое методу для выполнения своих инструкций. Время на выполнение вызываемых из него методов не учитывается. Hot spot – метод, имеющий сравнительно большое значение собственного времени исполнения. Профилировщик – утилита, показывающая параметры работы приложения. Профилирование – обнаружение проблем производительности измерительным методом.


Слайд 6

Цель профилирования По статистике, относительно небольшое число методов занимают больше всего процессорного времени. Поиск таких методов и устранение задержек позволяет улучшить скорость работы приложения. Неудаленные объекты, находясь все время в памяти, замедляют скорость работы приложения. Обнаружение и устранение утечек памяти является важной составляющей повышения качества приложения.


Слайд 7

Состав профилировщика Агент Загружается при старте виртуальной машины Java (Java Virtual Machine, JVM). Взаимодействует с JVM с использованием протокола JVM TI (Tool Interface). Клиент Предоставляет пользовательский интерфейс. Взаимодействие с агентом: переключение режимов профилирования, запись результатов измерений в файл. Визуализирует результаты профилирования.


Слайд 8

Вопрос Зачем заниматься исследованием потребления памяти, если существует автоматическая сборка мусора?


Слайд 9

Ответ Эффективность потребления памяти Java программой может существенно влиять на производительность и надежность этой программы.


Слайд 10

Почему важно избавляться от утечек? В случае невозможности выделить память под новый объект возникает OutOfMemoryError. Аварийное завершение программы или ее дальнейшая нестабильная работа. Возможна потеря результатов работы и/или повреждение файлов данных. Использование больших объемов памяти может привести к увеличению частоты обращения ОС к файлу подкачки. Общее снижение производительности системы. При создании большого количества временных объектов VM тратит больше времени на сборку мусора.


Слайд 11

Запуск С версии NetBeans 6.0 профилировщик входит в состав среды разработки. Для начала профилирования проекта нужно выбрать соответствующий пункт меню. Провести калибрацию (определение специфичных для данной среды работы условий) окружения.


Слайд 12

Возможности профилировщика Взаимодействие с SE, EE и ME приложениями. Оценка скорости выполнения отдельных частей программы. Отслеживание создаваемых Java объектов. Поиск утечек памяти. Создание отчетов.


Слайд 13

Мониторинг приложения Полезен для получения общей статистики о работе приложения. Отображает в реальном времени сведения : Об использованной памяти, О работе сборщика мусора, О потоках Java.


Слайд 14

Мониторинг приложения: статистика Приводит наглядную статистику параметров работы.


Слайд 15

Мониторинг приложения: другие возможности Сохранение результатов измерений в файл для последующего просмотра. Вызов сборщика мусора.


Слайд 16

Анализ производительности Необходим для получения детализированной информации о методах приложения: Время исполнения, Количество вызовов. Можно анализировать: Все приложение, Приложение и классы JDK, Только некоторые методы.


Слайд 17

Производительность блоков кода Для проведения анализа блока кода нужно выбрать интересующие классы и/или методы.


Слайд 18

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


Слайд 19

Производительность: сохраненные результаты Для более детального анализа можно сделать слепок состояния приложения. По сохраненным данным анализа можно построить: Дерево вызовов. Отсортированный список всех методов.


Слайд 20

Дерево вызовов Все вызванные методы помещаются в дерево Каждому узлу ставится в соответствие время работы и количество вызовов.


Слайд 21

Отсортированный список всех методов Каждый метод снабжен: временем исполнения, количеством вызовов, процентной шкалой от всего времени работы приложения.


Слайд 22

Комбинированное представление Отображается соответствие стека вызова имени метода.


Слайд 23

Анализ использования памяти Используется для оценки объема используемой памяти для нахождения неудаляемых объектов.


Слайд 24

Анализ памяти: результаты в реальном времени Отслеживание состава кучи (heap). Таблица содержит: Имя класса. Количество доступных (живых) объектов. Расход памяти (в байтах). Усредненное поколение* объекта. Число поколений объекта. *Поколение - число, отражающее количество пережитых данным объектом сборок мусора)


Слайд 25

Анализ памяти: сохраненные результаты Позволяет получить стек создания каждого объекта.


Слайд 26

Профилирование внешней программы Среда разработки позволяет проводить анализ приложения, запущенного вне среды разработки.


Слайд 27

Профилирование внешней программы: запуск целевого приложения Для удаленного анализа потребуется запустить целевое приложение с указанными параметрами. Среда предоставляет рекомендованные параметры для использования.


Слайд 28

Ссылки Сайт NetBeans: http://netbeans.org/ Описание профилировщика: http://www.netbeans.org/kb/60/java/profiler-intro.html Поиск утечек памяти: http://www.netbeans.org/kb/articles/nb-profiler-uncoveringleaks_pt1.html Онлайн-курсы: http://javapassion.com/ NetBeans IDE Field Guide by Patrick Keegan, Ludovic Champenois, etc. Язык программирования Java и среда NetBeans


Слайд 29

Q&A


Слайд 30

Дмитриев Андрей Владиславович andrei-dmitriev@yandex.ru Спасибо!


×

HTML:





Ссылка: