IntelliJ IDEA 2018.3 EAP: Git Submodules, JVM Profiler (macOS and Linux) and more

Please welcome the new IntelliJ IDEA 2018.3 EAP build with all its exciting new features! Available from the website, via Toolbox App, or as a patch update from the IDE.

At last, it’s here! We’ve just added support for the most voted feature in our issue tracker – yes you’ve heard right – the upcoming IntelliJ IDEA 2018.3 has support for Git submodules. Now when you clone repositories with the submodules, IntelliJ IDEA will not only clone the root repositories but also all its submodules. Moreover, update project now correctly updates all the submodules according to their state. Oh, and Diff, History, and Conflict resolution now work for submodule folders too.

IntelliJ JVM Profiler

Just when you thought it had everything, the upcoming IntelliJ IDEA 2018.3 Ultimate edition brings in the JVM Profiler. Currently, it only works on macOS and Linux, but don’t worry, Windows support is on the way.

Update:  In IntelliJ IDEA v2018.3 Ultimate edition, the JVM Profiler is available as an experimental feature. To start using the JVM Profiler go to the Maintenance dialog (Ctrl-Alt-Shift-/ on Linux, Cmd-Alt-Shift-/ on macOS), select the Experimental features option, and then select the idea.profiler.enabled checkbox.

The upcoming IntelliJ IDEA 2018.3 integrates a low overhead sampling profiler that can profile JVM and Native code – Async profiler. The async profiler doesn’t suffer from safe points bias, for more details please refer to the readme. It means that the IDE can now show the native parts of the execution stack, profile memory allocations, show Flame Graphs, and more.

For IntelliJ-based projects, you can start a Java (and Kotlin) run configuration with the profiler by using the profiler icon on the main toolbar. Gradle and Maven projects are not supported just yet.

ProfilerRun2

You can if you want also profile every single test individually

ProfilerRun

You can attach the profiler to a process which is already running with the Run | Attach Profiler to Local Process… action.

You can also open plain text dumps, generated by an async profiler with Run | Import Profiler Dump.

The brand new CPU Profiler tool window displays: Flame Chart, Call Tree, and Method List. You can navigate from any of those tabs to the source code by using the Jump to Source context action( available for all JVM stack frames). Just so you know, you can also use a speed search in the tabs of the CPU Profiler tool window.

Profiler

While you are in the Flame Chart, you can focus on any method by simply double-clicking on it, or you can use scrolling to resize the chart.

Activity Monitor

By the way, this EAP comes with a brand new Activity Monitor, so now you can see how much CPU the subsystems and plugins (both built-in and additionally installed) are consuming. The Activity Monitor arranges the subsystems, categories, and entries in the list by how much %CPU they are currently using; this may help you find slow plugins, slow subsystems, or other pain point areas. It’s available via Main menu | Help | Activity Monitor. This is currently only an experimental feature. When you report issues within the IDE, please don’t forget to attach CPU snapshots when applicable.

Screen Shot 2018-09-27 at 13.05.47

ActivityMonitor

Java

IntelliJ IDEA now highlights in the editor redundant usages of @SuppressWarning annotation, or // noinspection line comment, or /** noinspection */ JavaDoc comment “Redundant suppression”. Previously the IDE reported such cases only in the Inspection Results tool window. In case a suppressed inspection no longer addresses any warnings in the associated method body, class, or statement, the IDE will not only warn you but it also provides a quick-fix to remove such unnecessary annotations and comments. Please note that in order for the IDE to detect redundant suppressions, it is important that the suppressed inspections be enabled.

And please also make sure that the Redundant suppression inspection itself is enabled in Preferences/ Settings | Editor | Inspections | General | Redundant suppression.

JavaRedundantSuppression

The dataflow analysis now tracks the exact type of value (not only instanceof), in case it’s the result of a “new Smth()” expression.

JavaDataFlow

Kotlin

The Kotlin plugin bundled with the IDE has been updated to Kotlin 1.3 RC.

JVM debugger

In the first EAP build of IntelliJ IDEA 2018.3, we introduced a new debugger feature that allows you to attach to Java processes that were started without a debug agent.
With this fresh EAP build we extended this ability so now you can attach to the processes that have been started with JDK version 9+.

Editor

Now the search/replace for multi-line fragment works in Find in Path/Replace in the Path window. There is no need to use regular expressions to perform a multiline search, as a workaround anymore.

EditorMultilineSearch
We’ve also updated JDK to the 1.8.0_152-release-1293-b14 x86_64 version. You’ll find the following important fixes:

  • Drawing characters in Monospaced font was fixed ( JRE-847 )
  • The issues with frames maximization in HiDPI were resolved ( JRE-938 , JRE-956 )

The full list of all the changes is available in the IDE release notes and the JRE release notes.

Download a fresh new IntelliJ IDEA 2018.3 EAP build now! Please don’t hesitate to submit any issues you find to our tracker. We appreciate any feedback!

Happy Developing!

About Zlata Kalyuzhnaya

IntelliJ IDEA Marketing Manager at JetBrains. twitter: @ZlataKalyuzhnay ‏
This entry was posted in EAP Releases and tagged , , . Bookmark the permalink.

20 Responses to IntelliJ IDEA 2018.3 EAP: Git Submodules, JVM Profiler (macOS and Linux) and more

  1. Vladimir says:

    I have installed latest IntelliJ IDEA 2018.3 EAP (183.2940.10 on Ubuntu 18.04.1 LTS).
    When I try to use IntelliJ JVM Profiler I see “perf_event_open failed: Permission denied” error message. So, what should I do?
    Thanks.

  2. Ed Statham says:

    same here

    Linux mint18 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

  3. Ed Statham says:

    actually this can be solved like this:

    sudo sh -c ‘echo 1 > /proc/sys/kernel/perf_event_paranoid’

  4. Martin says:

    You need to change few sysctl values as explained here: https://github.com/jvm-profiling-tools/async-profiler#basic-usage

  5. Yosef says:

    Cannot find the way how to open “Activity Monitor”
    On main toolbar there is no “Help” button.
    From Search Everywhere no actions with this name

  6. Neale Upstone says:

    An attempt to profile a Tomcat instance using AyncProfiler didn’t work as it failed to launch anything. Trying the same thing on a JUnit test gave me:

    Could not find agent library …/183.2940.10/lib/profiler/linux/libasyncProfiler-linux.so in absolute path, with error: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20′ not found (required by …/183.2940.10/lib/profiler/linux/libasyncProfiler-linux.so)

    Ubuntu 14.04 LTS currently has up to 3.4.19. Is it possible to compile against 3.4.19?

  7. Neale Upstone says:

    The workaround to the above is to update the GCC toolchain as documented at https://askubuntu.com/a/582910.

    The following worked for me to get past this error:

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt update
    sudo apt-get install libstdc++6

    • Neale Upstone says:

      Note: This doesn’t solve the Tomcat error which still returns “unable to ping server at localhost:1099” having not got as far as starting anything

      2018-09-27 [2910301] INFO – ProfilerConfigurationExtension – agent args = start,collapsed,threads,interval=1ms,framebuf=15000000,file=/tmp/asyncprofiler7.dump
      2018-09-27 [2910314] WARN – erver.JavaeeServerInstanceImpl – Unable to ping server at localhost:1099

  8. opticyclic says:

    Its nice to see for a change that Linux support is not an afterthought.
    I think this is the first time I’ve seen a major application developer say “we have Linux support and Windows will come later” instead of the other way around!
    Thanks!

  9. Aaron Cody says:

    where can I find the docs describing the new git submodules feature?

    • Dmitriy Smirnov says:

      It is still in EAP, so public docs are not ready yet.
      To get an idea of how it should work see the comment at https://youtrack.jetbrains.com/issue/IDEA-64024#focus=streamItem-27-3076750-0-0

      Submodules should just work, there is no any specific commands or configuration needed.

      • Jaap van der Velde says:

        Using #PY-183.4284.139, Nov 21 2018, submodules are not included when cloning a repository as a new project from the wizard at startup.

        When I run git clone --recurse-submodules myrepo.git from the command line, everything works as expected, but when I clone the repo using the PyCharm UI, the project is cloned, but the submodule folders remain empty.

  10. Amir says:

    When submodule support will come to the PyCharm?

    • Dmitriy Smirnov says:

      It is available starting from the 183.2940. The latest EAP, released on October 3rd, already includes the changes.

  11. Alejandro says:

    Hello,

    I’ve installed 2018.3 RC (#IU-183.4284.36) on OSX High Sierra and the JVM profiler options don’t show up in the toolbar or in the menu, the search metions them, but they are not there.

    Is there any special config need it to enable them?

    Thanks.

  12. Stelios says:

    I don’t understand how that thing works (or not) but I really can’t understand the reasoning behind the IntelliJ vs other (maven et al) as in the end maven projects HAVE to be imported. Am I missing something here?

Leave a Reply

Your email address will not be published. Required fields are marked *