Эффективное решение проблем производительности Java-программ с применением YourKit Java Profiler Докладчик: Антон Катилин создатель YourKit Java Profiler.

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



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

Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Средства обнаружения атак. Архитектура систем обнаружения атак Модуль слежения Модуль управления Системы на базе узла Системы на базе сегмента.
Предоставляет доступ к множеству современных технологий, таким как: Многопоточность Микропотоки Встроенный ассемблер UNICODE Обфускация Улучшает продуктивность.
Java: современные технологии разработки ПО Вашенков О.Е. ООО «РСС», разработчик ПО.
АНТИВИРУС КАСПЕРСКОГО PERSONAL PRO. АНТИВИРУС КАСПЕРСКОГО 5.0 PERSONAL PRO ИНТЕРФЕЙС ПОЛЬЗОВАТЕЛЯ ПРОСТОТА НАСТРОЙКИ АНТИВИРУС КАСПЕРСКОГО® 5.0 PERSONAL.
Антивирус Касперского® Personal Pro. Антивирус Касперского® 5.0 Personal Pro Интерфейс пользователя Простой графический интерфейс с минимально необходимым.
Магистрант кафедры телекоммуникаций и информационных технологий Комиссар Дмитрий Семёнович Руководители: Доцент Резников Геннадий Константинович.
Подготовил студент группы 3881 Рамзайцев А.В. Руководитель: Федоров Д.Ю.
П ОДКЛЮЧЕНИЕ К УДАЛЕННЫМ РАБОЧИМ СТОЛАМ И ПРИЛОЖЕНИЯМ R EMOTE A PP Подготовила: студентка 2 курса 11 группы Направления «Государственное и муниципальное.
1 Работа под управлением ОС Windows. 2 Темы для обсуждения 1. Что такое операционная система Что такое операционная система Понятие ОС Виды ОС 2. Операционная.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Установка Linux Линукс Мастер из СБППО «Первая помощь 2.0»
Операционная система. Базовые понятия Операционная система – это комплекс программ, обеспечивающий контроль за существованием, распределением и использованием.
1 Платформа Java – обзор и перспективы развития Александр Зуев Sun Misrosystems 1.
Технические возможности. Наши цели Максимальная гибкость Максимальная скорость считывания и обработки данных Стабильность работы Максимальная простота.
ОС ReactOS Содержание презентации Обзор проекта ReactOS ReactOS и другие OSS-проекты Важные вопросы План развития Демонстрация Вопросы.
Ознакомить учеников с программой skype Дать определение понятию skype Узнать историю программы Определить функции программы.
Современные браузеры
Новые возможности Егоров Борис «Школа Инноваций InterSystems 2007»
Транксрипт:

Эффективное решение проблем производительности Java-программ с применением YourKit Java Profiler Докладчик: Антон Катилин создатель YourKit Java Profiler

Проблемы производительности: Программа работает медленно Программа потребляет много памяти и/или происходят утечки памяти Профилирование - решение проблем производительности измерительным методом. Эффективнее аналитического и имитационного.

YourKit Java Profiler Текущая версия: 3.2

Область применения YourKit Java Profiler: Java 1.3, 1.4, 5.0 J2SE, J2EE - версия 3 J2ME - версия 4 Windows, Linux, Solaris SPARC - версия 3 Mac OS X, Solaris PC - версия 4

Как устроен профайлер: Агент Клиент с пользовательским интерфейсом API для автоматизации профилирования

Агент: Библиотека (dll, so), написана на C/C++ Загружается при старте VM Взаимодействует с VM с использованием протоколов: JVMPI (до Java 5.0 включительно) и JVMTI (начиная с Java 5.0) Управляется извне через сокет Сохраняет результаты в файл (снепшоты)

Клиент: Предоставляет пользовательский интерфейс Взаимодействие с агентом: переключение режимов профилирования, запись результатов измерений в файл (получение снепшотов) Визуализация результатов профилирования

2 группы задач: профилирование памяти профилирование CPU

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

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

Причина 1: В случае невозможности выделить память под новый объект возникает OutOfMemoryError Аварийное завершение программы или ее дальнейшая нестабильная работа Возможна потеря результатов работы и/или повреждение файлов данных

Причина 2: Использование больших объемов памяти может привести к увеличению частоты обращения ОС к файлу подкачки Общее снижение производительности системы

Причина 3 При создании большого количества временных объектов VM тратит больше времени на сборку мусора Пример: конкатенация строк

Задачи, решаемые профилировнием памяти: Обнаружение и локализация утечек памяти Выявление "жадных" подсистем Поиск кода, порождающего много временных объектов

Что такое memory leak в Java? Автоматически уничтожаются объекты, не доступные из GC roots Объекты могут оставаться доступными по ссылкам, потому что программист забыл убрать на них ссылки

Утечки памяти не могут быть обнаружены полностью автоматически Сборка мусора – формальный алгоритм Memory leak – понятие семантическое

Пример memory leak: Компонент класса Application Компоненты класса Project Application хранит список обработчиков событий, каждый из которых имеет ссылку на объект Если обработчик не удаляется из списка, Project не может быть собран

О слежении за созданием объектов (Allocation recording) Замедляет профилируемую программу Полученные данные бесполезны для решения задачи 1 и 2: не важно "где" создан объект, важно "почему" он существует, т.е. какими ссылками он удерживается

В YourKit Java Profiler allocation recording - опция, по умолчанию выключенная С агентом YourKit Java Profiler можно запустить любую программу без потери производительности, получив возможность профилировать память при возникновении необходимости

Как найти и устранить утечку памяти: 0. Программа запущена с агентом профайлера -Xrunyjpagent в командной строке Запуск из IDE Интеграция с J2EE сервером

Как найти и устранить утечку памяти: 1. Коннект к агенту, сохранение снепшота, открытие снепшота в клиенте

Как найти и устранить утечку памяти: 2. Найти объекты интересующего нас класса (Ctrl+N)

Как найти и устранить утечку памяти: 3. Найти пути (Ctrl+P)

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

Вопрос: Класс объекта был известен заранее. А что делать, если это не так?

Ответ: 1. Часто классы объектов, имеющих "тенденцию" быть утечками памяти, хорошо известны разработчику (e.g. Project in IntelliJ IDEA)

Ответ: 2. Сравнение двух состояний памяти: еще без утечки и уже с утечкой

Ответ: 3. С использованием одного снепшота: анализ распределения числа объектов и размеров занимаемой памяти среди объектов разных классов

Анализ распределения памяти между подсистемами Отвечаем на вопрос Куда ушла вся память? Понятия shallow и retained size

Шаги: 0. Программа запущена с агентом 1. Получить и загрузить снепшот 2. Использовать 'Class tree'

'Class tree': Статистика по пакетам и классам Деление по пакетам зачастую отражает деление по подсистемам package = subsystem Получем достаточно представительную оценку распределения занимаемой памяти

Таким образом, YourKit Java Profiler позволяет находить утечки памяти и анализировать потребление памяти в реально работающих системах, с реальными нагрузками.

Поиск кода, порождающего много временных объектов (Excessive garbage allocation) Allocation recording включается только на необходимый период времени, все остальное время программы работает с полной скоростью Анализ hot spots и call trees методов, порождавших временные объекты Если снепшот получен со включенным allocation recording, можно анализировать распределение объектов (hot spots, call trees) по местам их создания в коде

Профилирование CPU 2 метода профилирования: sampling tracing включается/выключается явно - возможно профилирование реально работающих систем понятие снепшота

Sampling: периодически (десятки раз в секунду) опрашиваются стеки всех ниток с учетом интервалов между опросами оценивается проведенное в методах время Минимальное влияние на производительность профилируемой программы Точность достаточна в большинстве случаем для выявления узких мест

Tracing: замеряются времена входа и выхода в метод Замедление работы программы может быть существенным. Доступно число вызовов методов. Вывод: sampling – лучший выбор в большинстве случаев

Пользовательский интерфейс для анализа результатов профилирования CPU Hot Spots Call Trees (by thread, threads together) про каждый конкретный метод можно узнать: - merged callees - back traces - invocation points

Hot Spots

Call Trees (by threads, all threads together)

Про каждый конкретный метод можно узнать: Merged callees

Про каждый конкретный метод можно узнать: Back traces

Про каждый конкретный метод можно узнать: Invocation points

Прочие полезные особенности YourKit Java Profiler

Интерфейс Уделяется большое внимание Удобство работы с клавиатуры Swing

Фильтрация: деление на "интересные" и "неинтересные" методы java.lang.*, javax.swing.* другие профайлеры: задание фильтров перед измерением YourKit Java Profiler: фильтр - понятие пользовательского интерфейса

Плюсы подхода YourKit Java Profiler: от человека не требуется принимать решение заранее человек имеет возможность передумать как результат, экономится время и усилия человека

Архитектура агент - клиент естественным образом обеспечивает возможность профилирования как локальных, так и удаленных приложений В текущей версии снепшоты сохраняются в файловой системе удаленного хоста В версии 4 – возможность передачи снепшота по сети

Поддержка J2EE Профилирование серверов под реальной нагрузкой Автоматизированное конфигурирование ряда серверов: Tomcat, JBoss, WebLogic, JRun, Resin, Orion и др.

Интеграция профайлера и IDE Задачи: Запуск профилируемой программы Доступ к исходному тексту профилируемой программы

Особенности интеграции YourKit Java Profiler с IDE Плагин к IDE (IntelliJ IDEA, Eclipse, JBuilder, JDeveloper) Запуск приложения, задание параметров Профайлер – самостоятельная программа (standalone profiler UI) Навигация к коду в редакторе IDE

Некоторые ближайшие планы: Wall и CPU times J2ME Поддержка платформ: Mac OS X, Solaris PC NetBeans динамическая информация.Net

Контакты Узнать больше, попробовать: Обсудить, критиковать, предлагать: Anton Katilin