// 
//     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.
//

= Введение в профилирование приложений Java в IDE NetBeans
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Введение в профилирование приложений Java в IDE NetBeans - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Введение в профилирование приложений Java в IDE NetBeans

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

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

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

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

* Поведение приложения при выполнении
* Время ЦП, используемое методами приложения
* Создание объекта

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

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


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


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


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

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

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


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

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

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

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

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

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

* Инструмент профилирования включен в комплект с IDE NetBeans и для начала профилирования приложения не требуется дополнительная настройка.
* Если используется IDE NetBeans 7.2 или более ранняя версия, см. раздел link:../../72/java/profiler-intro.html[+Введение в профилирование приложений Java в IDE NetBeans 7.2+]


== Первое профилирование

При первом использовании средства профилирования среде IDE необходимо выполнить некоторые начальные операции для обеспечения получения точных результатов профилирования и интеграции средства с проектом. Чтобы продемонстрировать это, создадим проект AnagramGame, а затем выполним калибровку. Среда IDE автоматически выполнит интеграцию при первом профилировании проекта AnagramGame.


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

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

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

1. Выберите "Файл > Новый проект" (CTRL+SHIFT+N; &amp;#8984+SHIFT+N в Mac ОС) в главном меню.
2. В мастере создания проекта выберите категорию "Примеры > Java".
3. Выберите проект "Anagram Game". Нажмите кнопку "Далее".
4. Укажите местоположение проекта. Нажмите кнопку "Завершить".

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

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

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


=== Первое использование средства профилирования

Для получения точных результатов профилирования требуются данные калибровки для каждой платформы Java, которая будет использоваться для профилирования. При первом запуске средства профилирования, или если допустимые данные калибровки недоступны для данной платформы Java, среда IDE запросит выполнить процесс калибровки для вашей платформы.

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

1. Выберите *Дополнительные команды* > *Управление данными калибровки* в меню 'Профиль'.
2. Выберите платформу Java. Нажмите 'Калибровать'.
image::images/calibrate-select-platform.png[title="Диалоговое окно для выбора платформы Java при калибровке."]

По завершении операции калибровки появится диалоговое окно. Можно нажать кнопку "Показать подробные сведения", чтобы просмотреть диалоговое окно с информацией о результатах калибровки. Данные калибровки для каждой платформы Java сохраняются в каталоге  ``.nbprofile``  в домашнем каталоге.

image::images/calibrate-information.png[title="Диалоговое окно &quot;Сведения о калибровке&quot;."]

*Примечание.* При использовании NetBeans IDE 7.4 или более ранней версии нажмите *Дополнительные команды* > *Выполнить калибровку средства профилирования* в меню 'Профиль' и выберите платформу Java в диалоговом окне 'Выбор платформы Java для калибровки'.

image::images/calibrate-select-platform.png[title="Диалоговое окно для выбора платформы Java при калибровке."]


== Выбор задачи профилирования

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

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

|===
|Задача профилирования |Результаты 

|<<monitor,Наблюдение за приложением>> |Выберите для получения высокоуровневой информации о свойствах целевой JVM, включая активность потоков и распределение памяти. 

|<<cpu,Анализ производительности ЦП>> |Выберите для получения подробных данных о производительности приложения, включая время выполнения методов и число вызовов метода. 

|<<memory,Анализ использования памяти>> |Выберите для получения подробной информации о выделении объектов и сборке мусора. 
|===

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


=== Наблюдение за приложением

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

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

1. Убедитесь, что проект AnagramGame установлен как главный проект.
2. Выберите "Профиль > Профилировать главный проект" в главном меню.

Также можно щелкнуть правой кнопкой мыши узел проекта в окне 'Проекты' и выбрать 'Профиль'.

3. Выберите "Наблюдение" в диалоговом окне "Выбор задачи профилирования".
4. При необходимости выберите дополнительные параметры монитора. Нажмите кнопку "Выполнить".
image::images/monitor-task.png[title="Выбор задачи профилирования приложения монитора"]

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

При нажатии кнопки "Выполнить" среда IDE запускает приложение, и открывается окно "Средство профилирования" в левой панели среды IDE. В окне "Средство профилирования" содержатся элементы управления, позволяющие выполнять следующие действия.

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

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

image::images/profile-intro-telemoverview.png[title="Окно 'Обзор телеметрии'"]

Если обзор не открывается автоматически, можно выбрать "Окно > Профилирование > Обзор телеметрии", чтобы открыть окно вывода. Можно открыть окно "Обзор телеметрии VM" и просмотреть данные наблюдения в любое время во время сеанса профилирования.


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

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

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

* *Быстрый (образец).* В этом режиме IDE создает образец приложения и периодически создает трассировку стека. Этот вариант менее точен, чем методы инструментирования, но вызывает меньший дополнительный расход ресурсов. Этот вариант может помочь выбрать методы для инструментирования.
* *Расширенный (инструментация).* В этом режиме методы профилируемого приложения инструментируются. Среда IDE регистрирует вход и выход потоков в методы проекта, позволяя отслеживать время, затрачиваемое на каждый метод. При входе в метод потоки создают событие "вход в метод". При выходе из метода потоки создают соответствующее событие "выход из метода". Записываются метки времени обоих событий. Эти данные обрабатываются в реальном времени.

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

Корневой метод — это метод, класс или пакет в исходном коде, который можно указать как корень обработки. Данные профилирования собираются при входе и выходе одного из потоков приложения из корня обработки. До входа одного из потоков приложения в корневой метод данные профилирования не собираются. Указание корневого метода может значительно снизить дополнительный расход ресурсов на профилирование. Для некоторых приложений указание корневого метода может быть единственным способом получения подробных и/или реалистичных данных производительности, поскольку профилирование всего приложения может создать так много данных профилирования, что приложение станет непригодным к использованию, или даже произойдет отказ приложения.

*Примечание.* Режим профиля Quick недоступен в IDE NetBeans 7.0 и более ранних версиях. Можно использовать только инструментирование для получения результатов профилирования, но можно выбрать инструментирование всего приложения или ограничить инструментирование частью приложения, указав один или несколько корневых методов.

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

Теперь среда IDE будет использоваться для анализа производительности ЦП приложения Anagram Game. Необходимо выбрать вариант "Часть приложения", а затем  ``WordLibrary.java``  в качестве корневого метода профилирования. При выборе этого класса в качестве корневого метода профилирования последнее ограничивается методами в этом классе.

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

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

5. Нажмите кнопку *настроить*, чтобы открыть диалоговое окно "Изменение корневых методов профилирования".
image::images/select-cpu-task.png[title="Выбор задачи профилирования ЦП"]
6. В диалоговом окне 'Изменение корневых методов профилирования' разверните узел AnagramGame и выберите  ``Sources/com.toy.anagrams.lib/WordLibrary`` . При профилировании проекта можно указать несколько корневых методов профилирования.
image::images/edit-profiling-roots.png[title="Диалоговое окно для выбора корневых методов"]
7. Нажмите кнопку "Дополнительно", чтобы открыть диалоговое окно "Изменение корневых методов профилирования (Дополнительно)", в котором доступны дополнительные параметры для добавления, изменения и удаления корневых методов.
image::images/edit-profiling-roots-adv.png[title="Диалоговое окно для указания корневых методов"]

Можно видеть, что  ``WordLibrary``  указан как корневой метод. Нажмите "ОК", чтобы закрыть диалоговое окно "Изменение корневых методов профилирования (Расширенное)".

8. Нажмите "ОК", чтобы закрыть диалоговое окно "Изменение корневых методов профилирования".

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

9. Выберите *Профилировать только классы проекта* для значения "Фильтр".

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

image::images/show-filter-value.png[title="Диалоговое окно 'Показать значени фильтра'"]
10. Нажмите кнопку "Выполнить" в диалоговом окне "Выбрать задачу профилирования" для начала сеанса профилирования.

При нажатии кнопки "Выполнить" среда IDE запускает приложение Anagram Game и запускает сеанс профилирования. Чтобы просмотреть результаты профилирования, нажмите кнопку "Текущие результаты" в окне "Средство профилирования", при этом откроется окно "Текущие результаты". В окне "Текущие результаты" отображаются собранные на этот момент данные профилирования. По умолчанию отображаемые данные обновляются каждые несколько секунд. При анализе производительности ЦП в окне "Текущие результаты" отображаются сведения о времени, затраченным для каждого метода, и число вызовов каждого метода. Можно видеть, что в приложении Anagram Game изначально вызываются только выбранные корневые методы.

image::images/cpu-liveresults1.png[title="Текущие результаты ЦП"]

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


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

Задач "Анализ использования памяти" предоставляет данные об объектах, выделенных в целевом приложении, таких как число, тип и расположение выделенных объектов.

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

* *Быстро.* Если выбран этот вариант, профилировщик создаст образец приложения для предоставления данных, которые ограничены живыми объектами. Этот параметр отслеживает только живые объекты и не отслеживает распределение при использовании запасов. Если выбран этот вариант, невозможно регистрировать трассировки стеков или использовать точки профилирования. Этот вариант требует значительно меньших затрат, чем 'Дополнительно'.
* *Дополнительно.* При выборе этого варианта приложение может получить информацию о количестве, типе и расположении выделенных объектов. Все классы, которые в настоящее время загружены целевым JVM (и каждый новый класс после его загрузки), являются инструментами для получения информации о распределении объектов. Этот вариант необходимо выбрать, если нужно использовать точки профилирования при анализе памяти или если нужно выполнить запись стека вызовов. Этот вариант требует больших затрат на профилирование по сравнению с вариантом 'Быстро'.

Если вы выберете вариант 'Дополнительно', вы также можете установить следующие параметры.

* *Запись полного образа жизни объекта.* Выберите этот вариант, чтобы записать всю информацию по каждому объекту, в том числе количество выживших поколений.
* *Запись трассировки стека для распределения.* Выберите этот вариант, чтобы записать полный стек вызовов. Этот вариант позволяет просматривать дерево обратных вызовов для вызовов методов при просмотре снимка памяти.
* *Использование определенных точек профилирования.* Выберите этот вариант, чтобы включить поддержку точек профилирования. Отключенные точки профилирования игнорируются. При отмене этого параметра все точки профилирования в проекте игнорируется.

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

В этом упражнении среда IDE будет использоваться для анализа производительности памяти приложения Anagram Game. Рекомендуется выбрать вариант *Дополнительно* и выбрать параметр *Запись трассировки стека для распределения*, чтобы в IDE выполнялась запись полного стека вызовов. При выборе этого варианта при работе со снимком памяти вы сможетепросмотреть дерево обратных вызовов.

1. Нажмите кнопку "Остановить" в окне "Средство профилирования", чтобы остановить предыдущий сеанс профилирования (если он еще запущен) и приложение Anagram Game.
2. Выберите "Профиль > Профилировать главный проект" в главном меню.
3. Выберите "Память" в диалоговом окне "Выбрать задачу профилирования".
4. Выберите *Дополнительно*.
5. Выберите *Регистрировать трассировку стека для операций выделения*. Нажмите кнопку "Выполнить" для начала сеанса профилирования.

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

image::images/profile-java-memory.png[title="Выбор задачи профилирования памяти"]

При нажатии кнопки "Выполнить" среда IDE запускает приложение Anagram Game и запускает сеанс профилирования. Чтобы просмотреть результаты профилирования, нажмите кнопку "Текущие результаты" в окне "Средство профилирования", при этом откроется окно "Текущие результаты". В окне "Текущие результаты" отображается информация о размере и числе объектов, выделенных в нашем проекте.

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

image::images/profile-java-memresults1.png[title="Результаты профилирования памяти"]


== Получение моментального снимка

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

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

Поскольку для открытия моментальных снимков проекта сеанс профилирования выполняться не должен, можно открыть моментальный снимок проекта в любое время, выбрав снимок в списке сохраненных моментальных снимков в окне "Средство профилирования" и выбрав "Открыть".


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

Для приложения Anagram Game можно получить моментальный снимок результатов, чтобы просмотреть трассировку стека выделения для объектов типа  ``Строка`` . Можно получить другой моментальный снимок или сравнить два снимка. Путем сравнения моментальных снимков памяти можно просмотреть, какие объекты были созданы или освобождены из кучи в интервале между получения двух моментальных снимков. Моментальные снимки должны быть сравнимыми, что означает, что тип профилирования (например, выделения и жизнеспособность) и число отслеживаемых объектов должны совпадать.

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

1. Убедитесь, что сеанс профилирования по-прежнему выполняется.
(Если сеанс профилирования остановлен, повторите действия для анализа производительности памяти и откройте окно "Текущие результаты".)
2. Правой кнопкой мыши щелкните строку, содержащую  ``java.lang.String`` , в окне "Текущие результаты" и выберите "Получить снимок и показать стек операций выделения памяти".

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

image::images/profile-java-memstack1.png[title="Снимок результатов профилирования памяти"]

Среда IDE получает моментальный снимок памяти и открывает его во вкладке "Трассировка стека операций выделения памяти". На вкладке "Трассировка стека операций выделения памяти" можно изучить обратное дерево вызовов для методов, создавших экземпляр выбранного объекта.

3. Нажмите кнопку "Сохранить моментальный снимок в проекте" на панели инструментов моментального снимка (Ctrl-S; ⌘-S в Mac), чтобы сохранить моментальный снимок памяти в проекте. При сохранении моментального снимка в проекте он добавляется к списку сохраненных моментальных снимков Anagram Game в окне "Средство профилирования". По умолчанию моментальные снимки физически сохраняются в каталоге  ``nbproject/private/profiler``  проекта. К сохраненным моментальным снимкам добавляются суффикс  ``.nps`` .

*Примечание.* Вы можете сохранять снимки в любом местоположении файловой системы, но только снимки, сохраненные в папке по умолчанию в проекте, будут указаны в окне средства профилирования. Также можно нажать кнопку "Сохранить текущее представление в изображении" на панели инструментов моментального снимка, чтобы сохранить снимок как файлы изображений ( ``.png`` ), которые можно просмотреть вне среды IDE.

4. Получите другой моментальный снимок, нажав кнопку "Сделать моментальный снимок собранных результатов" на панели инструментов "Текущие результаты" (или нажмите кнопку "Сделать моментальный снимок" в окне "Средство профилирования"). Сохраните моментальный снимок.
5. В окне одного из снимков памяти, нажмите кнопку 'Вычислить разницу' ( image::images/comparesnapshots.png[title="Кнопка 'Сравнить списки'"] ) на панели инструментов снимков. Или выберите "Профиль > Сравнить моментальные снимки памяти" в главном меню.
6. В окне "Выбор моментального снимка для сравнения" выберите один из открытых моментальных снимков в списке. Нажмите кнопку "ОК".
image::images/profile-java-selectsnap.png[title="Диалоговое окно 'Выбрать снимки для сравнения'"]

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

При нажатии кнопки "ОК" откроется окно "Сравнение жизнеспособности", в котором отображается сравнение двух моментальных снимков памяти.

image::images/profile-java-compare.png[title="вкладка. на которой отображаются результаты сравнения жизнеспособности двух снимков памяти"]

Сравнение моментальных снимков сходно с моментальным снимком памяти, но на нем отображается только различия двух моментальных снимков. При анализе цифр в столбцах вы увидите, что знак плюс (+) означает, что значение увеличилось, а знак минус (-) означает, что значение уменьшилось. В столбце 'Динамический объем байтов' графическое представление позволит вам легко определить различие в распределенных байтах. Если левая половина ячейки в этом столбце зеленая, это означает, что число выделенных байтов для этого объекта меньше при получении второго моментального снимка, чем при получении первого. Если правая половина ячейки красная, это означает, что число выделенных байтов выше во втором моментальном снимке, чем в первом.

*Примечание.* Также можно настроить точки профилирования для создания снимков, что позволит добиться более точного контроля над временем создания снимков. Дополнительные сведения о создании моментальных снимков с помощью точек профилирования см. в разделе link:../../docs/java/profiler-profilingpoints.html[+Использование точек профилирования в IDE NetBeans+].

link:/about/contact_form.html?to=3&subject=Feedback:%20Introduction%20to%20Profiling[+Отправить отзыв по этому учебному курсу+]



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

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

Для получения более подробной информации о параметрах и функциях профилирования, не рассмотренных в этом документе, воспользуйтесь документацией, входящей в состав среды 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://www.javapassion.com/handsonlabs/nbprofilermemory/[+Поиск утечек памяти с помощью средства профилирования NetBeans+]
Практическое лабораторное занятие на link:http://www.javapassion.com/[+сайте JavaPassion+]
* 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,В начало>>

