// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Использование точек профилирования в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Использование точек профилирования в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Использование точек профилирования в IDE NetBeans

IDE NetBeans включает многофункциональный инструмент профилирования, который позволят получить важные сведения о режиме работы приложения во время выполнения. Средство профилирования NetBeans позволяет просто отслеживать состояния потоков, производительности ЦП и использования памяти приложением в среде IDE; оно потребляет сравнительно немного ресурсов.

В этом документе описывается использование точек профилирования в качестве альтернативного способа настройки и контроля сеансов профилирования. Точки профилирования схожи с точками остановка отладчика тем, что они размещаются непосредственно в исходном коде и вызывают определенное поведение при их достижении. После установки точки профилирования она становится частью проекта, пока не будет удалена. Можно открыть окно "Точки профилирования" для просмотра, изменения и удаления точек профилирования в ваших проектах.

Точки профилирования можно использовать для выполнения следующих задач:

* сброс результатов профилирования;
* создание мгновенного снимка или дампа кучи;
* запись метки времени или времени выполнения фрагмента кода;
* Запуск и остановка сценария генератора нагрузки (требуется подключаемый модуль генератора нагрузки)

В этом документе будет показано использование точек профилирования для получения данных профилирования о примере приложения Anagram Game, простого приложения Java, входящего в состав среды IDE. Хотя Anagram Game — это очень простой проект приложения Java, при профилировании больших и более сложных приложений Java, а также проектов корпоративных и веб-приложений желательно выполнять те же действия.

Перед тем, как приступить к этому учебному курсу, вам может потребоваться ознакомиться с использованием средства профилирования, прочитав следующую документацию.

* link:profiler-intro.html[+Введение в профилирование приложений Java в IDE NetBeans+]

image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"]


* Создание примера проекта


== Начало работы


=== Предпосылки

Предполагается, что читатель обладает базовыми знаниями по следующим технологиям или опытом программирования с их использованием:

* Программирование на Java
* IDE NetBeans


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

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

|===
|Программное обеспечение или материал |Требуемая версия 

|link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |7.2, 7.3, 7.4, 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |Версия 7 или 8 
|===

*Примечания.*

* Инструмент профилирования включен в комплект с IDE NetBeans и для начала профилирования приложения не требуется дополнительная настройка.


== Основы точек профилирования

Этот раздел — общее руководство по настройке точек профилирования в проекте, а также просмотру и изменению существующих точек профилирования. Существуют различные типы точек профилирования, можно выбрать точку профилирования в соответствии с конкретным случаем. Проект может иметь множество различных точек профилирования, связанных с ним. Можно выбрать, добавить, удалить, включить или отключить точки профилирования в соответствии с измерениями, которые необходимо получить во время этого сеанса профилирования.


=== Установка точки профилирования

Проще всего установить точку профилирования а исходном коде в окне редактора. Можно просто выбрать строку кода, в которой необходимо установить точку профилирования, и открыть окно "Новая точка профилирования". Точки профилирования также можно установить при настройке параметров сеанса профилирования.

1. Откройте файл, содержащий код, в который необходимо вставить точку профилирования.
2. В редакторе исходного кода правой кнопкой мыши щелкните строку, в которую необходимо добавить точку профилирования, и выберите *Профилирование* > *Вставить точку профилирования*, чтобы открыть мастер 'Новая точка профилирования'.
3. Выберите тип точки профилирования и проект. Нажмите кнопку "Далее".
image::images/ppoints-newstopwatch.png[title="Моментальный снимок диалогового окна 'Создать точку профилирования'"]

[start=4]
. Введите имя точки профилирования и настройки ее свойства. Нажмите кнопку 'Готово'.

При нажатии кнопки "Готово" значок, обозначающий тип точки профилирования, появится в левом поле редактора исходного кода рядом со строкой для вставки точки профилирования.

image::images/ppoints-icons.png[title="Аннотации точек профилирования на границе редактора исходного кода"] 


=== Включение, отключение и редактирование точек профилирования

Если сеанс профилирования выполняется, можно изменять, включать и отключать отдельные точки профилирования в редакторе исходного кода или в окне "Точки профилирования". Для просмотра списка всех точек профилирования откройте окно *Окно* > *Профилирование* > *Точки профилирования* в главном меню. В окне "Точки профилирования" отображается текущее состояние точек профилирования.

Если выполняется сеанс профилирования, в окне "Точки профилирования" отображается информация о том, сколько раз была достигнута каждая точка, также можно просмотреть отчет о результатах.

image::images/ppoints-window.png[title="Снимок окна 'Точка профилирования'"]

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

Для изменения состояния или параметров точки профилирования выполните одно из следующих действий.

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

Также можно щелкнуть правой кнопкой мыши имя точки профилирования в списке и выбрать команду во всплывающем меню.

При выборе изменения точки профилирования откроется диалоговое окно "Настроить точку профилирования".

image::images/ppoints-customize.png[title="Моментальный снимок диалогового окна 'Настроить точку профилирования'"] 


=== Просмотр активных точек профилирования в проекте

Точки профилирования можно использовать при анализе использования памяти или производительности приложения. При выборе задачи профилирования можно просмотреть активные точки профилирования, которые включены для сеанса профилирования.

1. Щелкните узел проекта правой кнопкой мыши и выберите "Профилирование", чтобы открыть диалоговое окно "Выбрать задачу профилирования".
2. Выберите задачу профилирования (ЦП или память).
3. Выберите *Расширенный (инструментарий)*.
4. Нажмите *Показать активные точки профилирования* на панели параметров.

Ссылка для отображения активных точек профилирования доступна только, если выбран параметр 'Расширенное профилирование'.

image::images/points-active.png[title="Моментальный снимок диалогового окна 'Активные точки профилирования'"]

При выборе пункта "Показать активные точки профилирования" откроется диалоговое окно со списком всех установленных в проекте точек профилирования. Точки профилирования, которые установлены, но отключены, недоступны.

*Примечание.* Если необходимо включить, отключить или настроить настройки точки профилирования откройте окно 'Точки профилирования' или найдите точку профилирования в проекте.


== Работа с точками профилирования

В этом разделе будет создан пример проекта, затем в исходном коде будут установлены различные точки профилирования. В этом упражнении демонстрируется использование различных точек профилирования.


=== Создание примера проекта

В этом документе точки профилирования будут использоваться при профилировании примера приложения Anagram Game. Для этого сначала используется мастер создания проекта для создания примера приложения.

Для создания приложения Anagram Game выполните следующие действия.

1. В главном меню выберите "Файл" > "Новый проект".
2. В мастере создания проекта выберите категорию "Примеры > Java".
3. Выберите проект "Anagram Game".
4. Укажите местоположение проекта. Нажмите кнопку 'Готово'.

При нажатии кнопки "Готово" среда IDE создает пример проекта Anagram Game.


[start=5]
. Выберите 'Выполнить' > 'Настроить основной проект' > AnagramGame в главном меню.

После настройки проекта как основного имя проекта Anagram Game будет выделено полужирным в окне 'Проекты'. По умолчанию при использовании среды IDE для профилирования проекта среда IDE профилирует главный проект. Если ни один проект не выбран в качестве главного, среда IDE выполнит профилирование проекта, который выбран в окне 'Проекты'.


=== Измерение времени выполнения фрагмента кода

Точка профилирования "секундомер" используется для получения меток времени при достижении точки профилирования. Точку профилирования "секундомер" также можно использовать для измерения времени выполнения фрагмента кода путем вычисления разницы между двумя метками времени. Можно установить любое число точек профилирования "секундомер".

При установке точки профилирования "секундомер" выбирается один из следующих типов.

* *Временная метка.* Этому типу назначается временная метка при достижении точки профилирования.
* *Временная метка и длительность.* Тип можно использовать для измерения времени выполнения фрагмента кода. Фрагмент кода для измерения указывается путем установки точки профилирования "секундомер" в точке для начала измерения и другой точки профилирования "секундомер" для завершения измерения. Точки "секундомер" начала и окончания имеют парные имена.

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

1. Откройте класс  ``Anagrams.java``  в редакторе, развернув пакет исходных файлов  ``com.toy.anagrams.ui``  и дважды щелкнув  ``Anagrams.java`` .
2. Найдите строку в исходном коде для начала измерения, например, строка 54.
3. Правой кнопкой мыши щелкните строку и выберите *Профилирование > Вставить точку профилирования*во всплывающем меню.
4. Выберите *Секундомер* для типа точки профилирования. Нажмите кнопку "Далее".
5. Выберите *Метка времени и длительность* в качестве параметра.

При выборе "Метка времени и длительность" диалоговое окно автоматически устанавливает запуск секундомера в начале строки кода и его остановку в конце следующей строки. Можно изменить строки запуска и остановки секундомера.


[start=6]
. Измените параметр *Местоположение (конец)*, чтобы изменить строку окончания на несколько строчек после строки начала. Нажмите кнопку 'Готово'.
image::images/stopwatch-dialog.png[title="Моментальный снимок диалогового окна 'Создать точку профилирования'"]

При установке точки профилирования в левом поле редактора появляются аннотации для начальной и конечной точек.

image::images/ppoints-editor-stopwatch.png[title="Точки профилирования активны для сеанса профилирования."]

При открытии окна "Точки профилирования" можно увидеть, что точка профилирования "секундомер" добавлена к списку.


[start=7]
. Щелкните "Профилировать главный проект" на панели инструментов.

[start=8]
. В диалоговом окне 'Выбрать задачу профилирования' щелкните задачу профилирования *ЦП* и выберите параметр *Расширенный (инструментарий)*.
image::images/select-profiling-task1.png[title="Диалоговое окно 'Выбор задачи профилирования'"]

*Примечание.* Точки профилирования могут быть использованы при анализе производительности и использования памяти.


[start=9]
. Выберите *Использовать определенные точки профилирования.* Нажмите кнопку "Выполнить" для начала сеанса профилирования.

При щелчке *Показать активные точки профилирования* можно просмотреть активные точки профилирования, включенные для сеанса профилирования.

image::images/ppoints-profile-stopwatch-act.png[title="Точки профилирования активны для сеанса профилирования."]

При нажатии кнопки "Выполнить" среда IDE запускает приложение Anagram Game и запускает сеанс профилирования. При открытии окна "Точки профилирования" можно узнать, были ли достигнута точка профилирования "секундомер". При достижении точки профилирования можно щелкнуть *отчет* в столбце "Результаты" окна, в результате чего откроется окно с данными точки профилирования и продолжительности выполнения фрагмента кода между начальной и конечной профилирования "секундомер".

image::images/ppoints-result-stopwatch.png[title="Снимок отчета результатов точки профилирования по секундомеру"]

*Примечание.* При первом профилировании проекта дополнительные сведения о калибровке и интеграции средства профилирования см. в разделе link:profiler-intro.html[+Введение в профилирование приложений Java в IDE NetBeans+].


=== Создание мгновенного снимка или дампа кучи

При необходимости получения данных профилирования в конкретный момент времени можно использовать точку профилирования для создания мгновенного снимка результатов профилирования или кучи (дамп кучи). Для создания мгновенного снимка результатов профилирования (памяти или ЦП) или дампа кучи точка профилирования получения моментального снимка размещается в исходном коде, далее необходимо выбрать тип мгновенного снимка и указать место сохранения файлов. Если не указать местоположение, все мгновенные снимки будут сохранены в папке главного проекта ( ``nbproject/private`` ).

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

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

1. Откройте класс  ``Anagrams.java``  в редакторе, развернув пакет исходных файлов  ``com.toy.anagrams.ui``  и дважды щелкнув  ``Anagrams.java`` .
2. Найдите строку в исходном коде, в которой необходимо разместить точку профилирования.
3. Правой кнопкой мыши щелкните строку и выберите *Профилирование > Вставить точку профилирования*во всплывающем меню.
4. Выберите *Сделать моментальный снимок* в качестве типа точки профилирования. Нажмите кнопку "Далее".
5. Выберите *Моментальный снимок данных профилирования* или *Дамп кучи* в качестве параметра.
6. Укажите местоположение для сохранения файлов или оставьте местоположение по умолчанию. Нажмите кнопку "Завершить".
image::images/ppoints-profile-snapheap.png[title="Создать новый снимок точки профилирования с выбранным дампом кучи"]

[start=7]
. Щелкните "Профилировать главный проект" на панели инструментов.

[start=8]
. В диалоговом окне 'Выбрать задачу профилирования' щелкните *ЦП* или *Память* и выберите параметр *Расширенный (инструментарий)*.

[start=9]
. Выберите *Использовать определенные точки профилирования.* Нажмите кнопку "Выполнить" для начала сеанса профилирования.

При щелчке *Показать активные точки профилирования* можно просмотреть активные точки профилирования, включенные для сеанса профилирования.

При нажатии кнопки "Выполнить" среда IDE запускает приложение Anagram Game и запускает сеанс профилирования. При открытии окна "Точки профилирования" можно узнать, были ли достигнута точка профилирования выполнения моментального снимка. Если точка профилирования была достигнута, можно щелкнуть *отчет* в столбце "Результаты", чтобы открыть окно создания снимка, на котором отображаются данные о точке профилирования. Для просмотра моментального снимка щелкните "открыть моментальный снимок" в окне 'Создать снимок'.

Точки профилирования моментального снимка могут быть эффективно связаны с точками сброса для создания дельт кучи.

При использовании точки профилирования создания моментального снимка получаемые снимки или дампы кучи автоматически сохраняются в указанном местоположении. Если указано, что моментальные снимки должны сохраняться в папке проекта, сохраненные моментальные снимки автоматически появляются в списке "Сохраненные моментальные снимки" в окне "Профилирование". Также можно открыть моментальные снимки в списке "Сохраненные моментальные снимки", выбрав элемент и щелкнув "Открыть".

*Примечание.* Если указано, что моментальные снимки должны сохраняться в папке, отличной от папки проекта, снимки не появляются автоматически в списке "Сохраненные моментальные снимки". Для открытия моментальных снимков, отсутствующих в списке "Сохраненные моментальные снимки", нажмите кнопку "Загрузка" рядом со списком и выберите местоположение сохраненного моментального снимка.

image::images/saved-snapshots.png[title="Снимок панели 'Новые результаты сброса'"]

Дополнительные сведения о работе с моментальными снимками и дампами кучи приведены в следующих документах.

* Дополнительные сведения о просмотре и сравнении моментальных снимков приведены в разделе "Получение моментальных снимков" учебного курса link:profiler-intro.html[+Введение в профилирование+].


=== Сброс результатов профилирования

Можно сбросить собранные результаты (память или ЦП) в любой определенной точке, поместив точку профилирования сброса результатов в исходный код.

Чтобы установить точку профилирования сброса результатов, выполните следующие действия.

1. Откройте класс  ``Anagrams.java``  в редакторе, развернув пакет исходных файлов  ``com.toy.anagrams.ui``  и дважды щелкнув  ``Anagrams.java`` .
2. Найдите строку в исходном коде, в которой необходимо разместить точку профилирования.
3. Правой кнопкой мыши щелкните строку и выберите *Профилирование > Вставить точку профилирования*во всплывающем меню.
4. Выберите *Сбросить результаты* в качестве типа точки профилирования. Нажмите кнопку "Далее".
5. Укажите имя точки профилирования и убедитесь в правильности местоположения точки профилирования. Нажмите кнопку "Завершить".
image::images/ppoints-newreset.png[title="Снимок панели 'Новые результаты сброса'"]

[start=6]
. Щелкните "Профилировать главный проект" на панели инструментов.

[start=7]
. В диалоговом окне 'Выбрать задачу профилирования' щелкните *ЦП* или *Память* и выберите параметр *Расширенный (инструментарий)*

[start=8]
. Выберите *Использовать определенные точки профилирования.* Нажмите кнопку "Выполнить" для начала сеанса профилирования.

При щелчке *Показать активные точки профилирования* можно просмотреть активные точки профилирования, включенные для сеанса профилирования.

При нажатии кнопки "Выполнить" среда IDE запускает приложение Anagram Game и запускает сеанс профилирования. При открытии окна "Точки профилирования" можно узнать, были ли достигнута точка профилирования сброса результатов. Если точка профилирования была достигнута, можно щелкнуть *отчет* в столбце "Результаты", чтобы открыть окно со сведениями о точке профилирования.

image::images/ppoints-results-reset.png[title="Снимок отчета результатов точки профилирования при сбросе"]link:/about/contact_form.html?to=3&subject=Feedback:%20Using%20Profiling%20Points[+Отправить отзыв по этому учебному курсу+]



== Дополнительные сведения

В этом документе демонстрируются основы использования точек профилирования при профилировании простого проекта NetBeans. Описанные выше действия применяются при профилировании большинства проектов. Для получения более подробной информации о параметрах и функциях профилирования, не рассмотренных в этом документе, ознакомьтесь с документацией, входящей в состав среды IDE и доступной из меню "Справка".

Сопутствующая документация приведена в следующих ресурсах.

* link:http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ#section-NetBeansUserFAQ-Profiler[+Часто задаваемые вопросы по профилировщику NetBeans+]
Документ содержит часто задаваемые вопросы по профилированию приложений в среде IDE NetBeans
* link:http://wiki.netbeans.org/wiki/view/FaqProfilerProfileFreeForm[+Часто задаваемые вопросы: профилирование проекта произвольной формы+]
* link:profiler-screencast.html[+Демонстрация: точки профилирования, детализированные графики, анализатор кучи+]
Демонстрация некоторых функций профилирования в среде IDE NetBeans
* link:../../../community/magazine/html/04/profiler.html[+Расширенное профилирование: теория на практике+]
* link:http://profiler.netbeans.org/index.html[+profiler.netbeans.org+]
Сайт проекта средства профилирования NetBeans
* link:http://blogs.oracle.com/nbprofiler[+Блог по средству профилирования NetBeans+]
* link:http://profiler.netbeans.org/mailinglists.html[+Списки рассылки по средству профилирования NetBeans+]

<<top,В начало>>

