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.
You can if you want also profile every single test individually
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.
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.
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.
The dataflow analysis now tracks the exact type of value (not only instanceof), in case it’s the result of a “new Smth()” expression.
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.
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!
Vladimir says:
September 26, 2018I 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.
Ed Statham says:
September 27, 2018same 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
Ed Statham says:
September 27, 2018actually this can be solved like this:
sudo sh -c ‘echo 1 > /proc/sys/kernel/perf_event_paranoid’
Martin says:
September 27, 2018You need to change few sysctl values as explained here: https://github.com/jvm-profiling-tools/async-profiler#basic-usage
Yosef says:
September 27, 2018Cannot find the way how to open “Activity Monitor”
On main toolbar there is no “Help” button.
From Search Everywhere no actions with this name
Zlata Kalyuzhnaya says:
September 27, 2018Hi Yosev, I’ve added a screenshot to the blog to show where to look for the Activity Monitor.
Neale Upstone says:
September 27, 2018An 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?
Neale Upstone says:
September 27, 2018The 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:
September 27, 2018Note: 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
opticyclic says:
September 27, 2018Its 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!
Aaron Cody says:
September 30, 2018where can I find the docs describing the new git submodules feature?
Dmitriy Smirnov says:
October 2, 2018It 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:
December 5, 2018Using #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.
Go K8s says:
October 2, 2018Helm charts support please!!! 🙂
https://youtrack.jetbrains.com/issue/IDEA-187729
Zlata Kalyuzhnaya says:
October 2, 2018Already supported
Amir says:
October 3, 2018When submodule support will come to the PyCharm?
Dmitriy Smirnov says:
October 5, 2018It is available starting from the 183.2940. The latest EAP, released on October 3rd, already includes the changes.
Alejandro says:
November 13, 2018Hello,
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.
Zlata Kalyuzhnaya says:
November 13, 2018Hi, please check the next post: https://blog.jetbrains.com/idea/2018/11/intellij-idea-2018-3-beta-2-is-available/
Stelios says:
November 30, 2018I 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?
Daniel says:
April 11, 2019It would be great if someone could shed some light on this project thing.
What exactly is the issue with an imported maven project?
How could one workaround by building a “proper” IntelliJ project?
To me its entirely unclear which information is missing from the imported maven project.
Ion Freeman says:
March 13, 2019Hello! Can you set an expectation of which release will have the JVM Profiler for Windows?