Reporting performance problems

This article is dedicated for reporting performance problems with IntelliJ IDEs and related information to JetBrains support. You can submit a support request via Help menu in your IDE or via Submit a Request button at the top of this page.

IDE hangs and doesn't respond

Please refer to this document for reporting the problems when IDE is completely frozen and doesn't respond to any actions for a long time.

If you can continue working with the IDE, but it feels slower than expected, CPU usage is high or there is a memory leak, read below.

Enabling Profiler Agent

Windows/Mac/Linux

With the Performance Testing plug-in enabled use Help | Diagnostic | Enable CPU Profiler (supported only for IntelliJ IDEA and PhpStorm at the moment, for the other products please read below how to add the proper VM option to enable profiling).

For the older, not yet supported IDE versions or to enable the profiling agent at the IDE start please follow these steps:

  1. Help | Edit Custom VM Options or locate the .vmoptions file for your product
  2. At the end of the .vmoptions file add the following line (any macOS and 32-bit Windows/Linux):
-agentlib:yjpagent=delay=10000,probe_disable=*

Windows/Linux users running under 64-bit JVM and editing <product>64.vmoptions file should use this line instead:

-agentlib:yjpagent64=delay=10000,probe_disable=*

Linux with 2017.3 or lower product version

Please use the following parameter for 64-bit Linux system

-agentlib:yjpagent-linux64=delay=10000,probe_disable=*

or this one for 32-bit Linux:

-agentlib:yjpagent-linux=delay=10000,probe_disable=*

IntelliJ IDEA and PyCharm Community Editions do not include a YourKit profiler agent, because the YourKit agent library is not open-source. To take a CPU or memory snapshot with the Community Edition, you can download an evaluation version of YourKit Java Profiler, copy the yjpagent library to the IDE bin directory, add it to the .vmoptions as described above, and connect to the running IDE instance from the standalone YourKit Profiler UI.

 

Capturing Snapshots

After restarting the IDE you should see two new items under the Tools menu: Start CPU Usage Profiling and Capture Memory Snapshot.

CPU Snapshot

To provide an informative CPU snapshot you should click on Start CPU Usage Profiling and then perform the actions which are causing performance problems, try to reproduce the performance problem several times while the snapshot is being recorded, then click on the Tools | Stop CPU Usage Profiling to save the snapshot file (snapshot is saved in the user home directory and IDE will show a notification with the exact file name, the extension of the file is .zip). If you don't see a notification and can't find the snapshot file, please check that notifications are enabled for the Profiler.

When reporting the problem, please make sure to describe what you were doing in detail.

CPU Snapshot with Invocation Counts

Since 2018.3 IDE version please hold Shift while clicking on the Start CPU Usage Profiling menu item when asked to provide the snapshot with invocation counts (please do not provide the snapshot with the invocation counts if you were not explicitly asked to do so).

For IDE versions before 2018.3:

When asked to provide a snapshot with the invocation counts, in addition to the -agentlib... option please also add the following into the .vmoptions file:

-Dprofile.trace=true

Make sure there is no disabletracing option in the -agentlib... line, use the options string from the Enabling Profiling Agent section of this document.

Restart your IDE and capture the CPU snapshot from the Tools menu or using the toolbar button.

Memory Snapshot

If the problem you are reporting is related to the heavy memory usage and frequent garbage collection, while increasing the heap size doesn't help, use the Capture Memory Snapshot menu item. To capture automatic memory snapshots when IDE runs out of memory, add

-XX:+HeapDumpOnOutOfMemoryError

into .vmoptions file. .hprof dump file will be created in the current working directory of the application (IDEA_HOME/bin). In case this directory is read-only, add 

-XX:HeapDumpPath=/dumps/folder

option to change it. See Oracle documentation for more details.

Please note, that memory snapshot may contain the sensitive source code from your project.

jmap Binary Memory Snapshot

Use jmap utility from the Java distribution to get shared object memory maps or heap memory details for a process. Process ID (pid) can be obtained using jps utility or your system specific process manager. Example:

jmap -dump:live,format=b,file=heap.bin <pid>

 

Thread Dumps

When IDE hangs and doesn't respond so that you can't use the menu to capture the snapshot, please provide the thread dumps.

 Profiling Slow Startup

To profile slow startup by automatically enabling CPU snapshot recording right after IDE is started, please use the sampling option:

-agentlib:yjpagent64=sampling

Adjust this line depending on the OS and the JDK (32-bit/64-bit, see in Help | About). Please check the Enabling Profiler Agent section above. You just need to replace delay=10000 option with the sampling option and make sure NOT to specify the probe_disable=* option.

CPU snapshot file will be saved automatically after your close the IDE into your HOME/snapshots directory with the .snapshot extension.

Uploading Snapshots to JetBrains FTP Server

If your snapshot is smaller than 10MB, it's fine to attach directly to support tickets or YouTrack issues. Otherwise, please use https://uploads.services.jetbrains.com/ or FTP:

After you've saved the snapshot, please upload it to our FTP server: ftp://ftp.intellij.net/.uploads/ (anonymous login, .uploads directory has no permissions to list/download files, only for upload, so that other users will not be able to download your snapshots). Inform JetBrains developers via YouTrack performance problem report about the uploaded file and provide its name (or send this file name to the Support Team via the ticket).

If you can't use FTP, upload the snapshot at https://uploads.services.jetbrains.com/ or use some file sharing service, like Dropbox, Google Drive, etc. and send us the link.

Please see Uploading Large Files for JetBrains Support Team for more details.

33 comments
I tried debug Android Studio in Mac X El Capitan. After adding flag I got: xxx@~$ open -a Android\ Studio LSOpenURLsWithRole() failed for the application /Applications/Android Studio.app with error -10810. I tried these: -agentpath:libyjpagent.jnilib=delay=10000 -agentlib:yjpagent64=delay=10000 -agentlib:yjpagent=delay=10000
0
Console log: ``` 11/01/16 18:00:26,849 studio[1689]: Value of STUDIO_JDK: (null) 11/01/16 18:00:26,853 studio[1689]: fullFileName is: /Applications/Android Studio.app/Contents/bin/studio.vmoptions 11/01/16 18:00:26,853 studio[1689]: fullFileName exists: /Applications/Android Studio.app/Contents/bin/studio.vmoptions 11/01/16 18:00:26,853 studio[1689]: Value of STUDIO_VM_OPTIONS is (null) 11/01/16 18:00:26,854 studio[1689]: Processing VMOptions file at /Applications/Android Studio.app/Contents/bin/studio.vmoptions 11/01/16 18:00:26,854 studio[1689]: Done 11/01/16 18:00:26,854 studio[1689]: Processing VMOptions file at /Users/neworld/Library/Preferences/AndroidStudio1.5/studio.vmoptions 11/01/16 18:00:26,854 studio[1689]: Done 11/01/16 18:00:26,854 studio[1689]: Processing VMOptions file at 11/01/16 18:00:26,854 studio[1689]: No content found 11/01/16 18:00:26,859 com.apple.xpc.launchd[1]: (com.google.android.studio.48992[1689]) Service exited with abnormal code: 1 ```
0

I can't seem to enable the profiler agent.  I'm running IDEA EAP 15CE on Mac OS/X 10.10.5.

When I look in ~/Library/Preferences, I see two IDEA related directories:

  • IdeaIC15
  • IntelliJIdea15

I copied /Applications/IntelliJ\ IDEA\ 15\ CE.app/Contents/bin/idea.vmoptions over to IntelliJIdea15 and edited the file there to include:

-agentlib:yjpagent=delay=10000

I restarted the IDE, but there were no new options under the Tools menu.  So then I tried editing idea.vmoptions under the IdeaIC15 directory, but when I do that, the IDE won't start at all and I see nothing to indicate what the error is in idea.log.

Is there something I'm doing wrong here?

Edited by ryan shoemaker
0

Article is closed for comments.

Have more questions?

Submit a request