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

Презентация:



Advertisements
Похожие презентации
Виртуальная машина Java Андрей Дмитриев 2008.
Advertisements

Программная инженерия Дмитриев Андрей Владиславович
Программная инженерия Андрей Дмитриев ©
Эффективное решение проблем производительности Java-программ с применением YourKit Java Profiler Докладчик: Антон Катилин создатель YourKit Java Profiler.
Программная инженерия Дмитриев Андрей Владиславович
Платформа Java SE: введение Андрей Дмитриев
Выполнили: Мартышкин А. И. Кутузов В. В., Трояшкин П. В., Руководитель проекта – Мартышкин А. И., аспирант, ассистент кафедры ВМиС ПГТА.
Программная иженерия Андрей Дмитриев ©
Контроль исполнительской дисциплины – мониторинг состояния задач и документов WEB- интерфейс типового решения.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
§ 2.5. Табличные информационные модели Информатика 7 класс.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
1. ЧТО ТАКОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? НАБОР ПРОГРАММ В ПАМЯТИ КОМПЬЮТЕРА 2. ИЗ КАКИХ ЧАСТЕЙ СОСТОИТ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ? КРОССОВЫЕ ТЕСТОВЫЕ СИСТЕМНЫЕ.
«СЕТИ КОМПЬЮТЕРОВ. ОСНОВНЫЕ ПОНЯТИЯ» Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Система просмотра истории работы в интернете «WebHistory». Инструкция для пользователя.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
ТЕСТИРОВАНИЕ МЕТОД «ЧЕРНОГО ЯЩИКА» ВЫПОЛНИЛ СТУДЕНТ ГР. ИВТ-51 з БАННИКОВА Н.Р.
Сложные периодические расчеты. Пример Сотрудник предприятия взял очередной отпуск на один из месяцев года Начислили и выплатили ему отпускные перед тем,
- поддержка справочных данных (ТФЕ, ТФС); - поддержка информационной базы влияния факторов на показатели качества выполнения операций; - описание функциональной.
ДАЛЕЕ БАЗА ДАННЫХ ACCESS Проектирование базы данных Создание базы данных Создание базы данных без помощи мастера Таблицы Создание таблицы в режиме конструктора.
Транксрипт:

Программная инженерия Дмитриев Андрей Владиславович

Обнаружение узких мест и анализ утечек памяти Дмитриев Андрей Владиславович

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки Сайт NetBeans: Описание профилировщика: Поиск утечек памяти: uncoveringleaks_pt1.html Онлайн-курсы: NetBeans IDE Field Guide by Patrick Keegan, Ludovic Champenois, etc. Язык программирования Java и среда NetBeans

Q&A

Дмитриев Андрей Владиславович Спасибо!