Intellij Idea - Profiling

Profiler gives insights about your application like its CPU, memory and heap usage. It also
gives details about the application threads. This chapter discusses the usage of VisualVM
tool for Java application profiling. It can profile entities such as CPU and heap.
It is recommended that the readers of this tutorial are familiar with the application profiler
concepts.
VisualVM is a visual tool that integrates JDK tools and gives you powerful profiling
capabilities. It allows you to generate and analyze heap data, track down memory leaks,monitor the garbage collector and perform memory and CPU profiling.
Visual interface for local and remote Java applications running on JVM.
Visual interface for local and remote Java applications running on JVM.
Monitoring of application’s memory usage and application’s runtime behavior.
Monitoring of application’s memory usage and application’s runtime behavior.
Monitoring of application threads
Monitoring of application threads
Analyzing the memory allocations to different applications.
Analyzing the memory allocations to different applications.
Thread dumps − very handy in case of deadlocks and race conditions.
Thread dumps − very handy in case of deadlocks and race conditions.
Heap dumps − very handy in analyzing the heap memory allocation.
Heap dumps − very handy in analyzing the heap memory allocation.
In this section, we will learn the steps performed to configure VisualVM. The steps are as
follow −
Download it from here.
Download it from here.
Extract the zip file.
Extract the zip file.
Navigate to etc/visualvm.conf file and add the following line in this file −
Navigate to etc/visualvm.conf file and add the following line in this file −
visualvm_jdkhome=<path of JDK>

If your JDK is installed in the C:\Program Files\Java\jdk-9.0.1 directory then
it should look like this −
If your JDK is installed in the C:\Program Files\Java\jdk-9.0.1 directory then
it should look like this −
visualvm_jdkhome="C:\Program Files\Java\jdk-9.0.1"

Let us now see how to monitor the application. Consider the following steps to understand
the same −
Double-click on the visualvm.exe file.
Select the application from left pane.
Select the monitor tab.
You will be directed to a window where you will get the details about CPU, Heap, Classes
and threads. To be specific with the usage, hover the mouse over any graph. We can see
the usage of Heap in the above screenshot.
Java application can contain multiple threads of execution. To know more about threads,
select the Threads tab of a particular application. It will give various statistics about
threads like number of live threads and daemon threads. The different thread states are
Running, Sleeping, Waiting, Park and Monitor.
VisualVM supports CPU, memory sampling and memory leak detection. To sample application, select application and choose the sample tab −
For CPU sampling, click on the CPU button as show in the following screenshot −
For memory profiling, click on the Memory button as shown in the following screenshot −
A memory leak occurs when an application, while running, slowly fills up the heap with
objects that are not automatically deleted by the program.
If an object that is not used by the program is not deleted, then it remains in memory and
the GC cannot reclaim its space. If the number of bytes and number of instances in your
application were to increase constantly and significantly in your program to the point of
using up all the space, this can be an indication of a memory leak.
In this section, we will learn how to profile an application. To profile an application, select application from left pane and click the profile tab −
To perform CPU profiling, click on the CPU button as shown in the screenshot below −
To perform CPU profiling, click on the CPU button as shown in the screenshot below −
 Print
 Add Notes
 Bookmark this page