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

Содержание

Слайд 2

Обнаружение узких мест и анализ утечек памяти

Обнаружение узких мест и анализ утечек

Обнаружение узких мест и анализ утечек памяти Обнаружение узких мест и анализ
памяти

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

Слайд 3

Качество программы

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

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

Слайд 4

Программа

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

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

Слайд 5

Определения (1/2)

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

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

Слайд 6

Определения (2/2)

Собственное время исполнения – время, необходимое методу для выполнения своих инструкций.

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

Слайд 7

Цель профилирования

По статистике, относительно небольшое число методов занимают больше всего процессорного времени.
Поиск

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

Слайд 8

Состав профилировщика

Агент
Загружается при старте виртуальной машины Java (Java Virtual Machine, JVM).
Взаимодействует с

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

Слайд 9

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

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

Слайд 10

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

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

Слайд 11

Почему важно избавляться от утечек?

В случае невозможности выделить память под новый объект

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

Слайд 12

Запуск

С версии NetBeans 6.0 профилировщик входит в состав среды разработки.
Для начала профилирования

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

Слайд 13

Возможности профилировщика

Взаимодействие с SE, EE и ME приложениями.
Оценка скорости выполнения отдельных частей

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

Слайд 14

Мониторинг приложения

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

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

Слайд 15

Мониторинг приложения: статистика

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

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

Слайд 16

Мониторинг приложения: другие возможности

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

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

Слайд 17

Анализ производительности

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

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

Слайд 18

Производительность блоков кода

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

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

Слайд 19

Производительность: результаты в реальном времени

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

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

Слайд 20

Производительность: сохраненные результаты

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

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

Слайд 21

Дерево вызовов

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

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

Слайд 22

Отсортированный список всех методов

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

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

Слайд 23

Комбинированное представление

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

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

Слайд 24

Анализ использования памяти

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

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

Слайд 25

Анализ памяти: результаты в реальном времени

Отслеживание состава кучи (heap).
Таблица содержит:
Имя класса.
Количество

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

*Поколение - число, отражающее количество пережитых данным объектом сборок мусора)

Слайд 26

Анализ памяти: сохраненные результаты

Позволяет получить стек создания каждого объекта.

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

Слайд 27

Профилирование внешней программы

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

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

Слайд 28

Профилирование внешней программы: запуск целевого приложения

Для удаленного анализа потребуется запустить целевое приложение

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

Слайд 29

Ссылки

Сайт 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

Ссылки Сайт 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 Онлайн-курсы:
Champenois, etc.
Язык программирования Java и среда NetBeans
Имя файла: Программная-инженерия.pptx
Количество просмотров: 183
Количество скачиваний: 1