IntelliJ IDEA 2020.3 Help

Run with a profiler

Run a method with a profiler

  • Click the the Run button icon in the gutter next to the method that you want to profile and select the necessary profiling option: CPU, memory, or Java Flight Recorder.

    run with profiler

Profile a run configuration

At the moment, you can profile the most common run configurations. Application server run configurations are currently not supported, except the local Tomcat run/debug configuration.

  1. Select a run configuration from the list on the toolbar.

    If the list is empty or the necessary configuration is not created yet, refer to Run/debug configurations for instructions on how to create one.

  2. Click Icons actions move down next to Profiler and select the necessary profiling option: CPU, memory, or Java Flight Recorder.

    Profiling a run configuration

(Only for Async Profiler on Linux) Upon the first launch of the profiler, IntelliJ IDEA checks whether kernel variables are already set up and suggests the necessary changes:

adjust linux kernel variables for the profiler

Profile Maven goals

In IntelliJ IDEA, you can profile several goals:

  1. From the main menu, select View | Tool Windows | Maven.

  2. In the Maven tool window, right-click the goal that you want to profile and select the necessary profiling option: CPU, memory, or Java Flight Recorder.

    Profiling a Maven goal

    IntelliJ IDEA creates a temporary run configuration that you can save and rerun later.

If you already have a Maven run/debug configuration for the required goal, you can profile it the same way as any other run configuration.

Limitations

Currently, there are several limitations for profiling Maven goals:

  • Profiling tools in IntelliJ IDEA do not support Maven profiles, executions, and versions. That is why, some complex configurations might not profile correctly.

  • Profiling of specific versions of the mentioned goals is not supported (for example: org.codehaus.mojo:exec-maven-plugin:3.0.0:exec ).

  • You cannot profile the goals if they are configured in a way that more than one process is created during their execution.

  • Profiling of the exec:exec, surefire:test, and failsafe:integration-test goals is possible only in projects without modules. You can, however, profile a specific module provided that it has no sub-modules.

  • Profiling is not possible if there are certain arguments in a plugin configuration:

    • commandlineArgs in the exec:exec plugin configuration

    • debugForkedProcess in the surefire:test and failsafe:integration-test plugin configurations

  • If the Exec Maven Plugin configuration has <arguments> in pom.xml, the values in <arguments> are skipped during the execution of the exec:exec goal.

Attach a profiler to a running process

  1. From the main menu, select View | Tool Windows | Profiler.

    In the Profiler tool window, you will see the list of running processes.

  2. Click the necessary process and select a profiling type: CPU, memory, or Java Flight Recorder.

    Attaching Java Flight Recorder to a process

Stop profiling and get results

When the profiling data is ready, you will see a confirmation popup together with the Profiler tool window bar. Click this bar to open the Profiler tool window or go to View | Tool Windows | Profiler if you don't use tool window bars.

Profiler popup informing that the data is ready

Alternatively, go to View | Tool Windows | Profiler, wait for Java Flight Recorder to collect enough data, and click Stop Profiling and Show Results.

Getting the profiling results

When the analysis is finished, you can review and analyze the reports.

Last modified: 02 April 2021