Java: slow performance or hangups when starting debugger and stepping

Debugger performance can be affected by the following:

  • Method breakpoints will slow down debugger a lot because of the JVM design, they are expensive to evaluate. Remove method breakpoints and consider using the regular line breakpoints. To verity that you don't have any method breakpoints open .idea/workspace.xml file in the project root directory (or <project>.iws file if you are using the old project format) and look for any breakpoints inside the method_breakpoints node.
  • Watch method return values option is enabled in the Debugger Panel. Try disabling this option to improve the performance.
  • Enable alternative views for Collections classes and Enable toString()’ object view options enabled in Settings | Debugger | Data Views. If toString() methods take a long time to complete, disable this option. Note that custom toString() methods can also change the semantics of the application when running under debugger in case the code inside these methods changes the state of your application.
10 comments

My debugger suddenly started to fail to start. I deleted all my breakpoints (~20) & that fixed it.

0

"If toString() methods take a long time to complete, disable this option". After doing this I was able to step through the code without experiencing slowness.

0

Removing the method breakpoint made my debugging faster.. Before that is was none responsive.

0

I must also chime in to say that removing the method breakpoint was the key for me.

It went from a deployment that took (no joke) about 30 minutes, to under 30 seconds.

0

All of these settings are correct locally and I still get freezes from 5 to 10 seconds on every debug run.

I've allocated huge amounts of memory in both gradle, intellij natively, and also set my local host manually in /etc/hosts and still nothing.

0

I'm experiencing the same problem running IntelliJ on my Mac.  Starting a java debugging session hangs IntelliJ 10+ seconds on every start.

3

Thank you Serge that fixed it for me.

TLDR:

git clone https://github.com/thoeni/inetTester

java -jar ./bin/inetTester.jar

Find the hostname that's output from the .jar

sudo nano /etc/hosts and add these two entries

127.0.0.1 <output-host-name>.local

::1 <output-host-name>.local


EDIT:

If you continue to have problems with a slowdown of intellij debugging even after applying the fix to /etc/hosts then run the inetTester again. My localhost name changed on me all of a sudden and the debugger started hanging predictably again.

Just run the inetTester again and add your new hostname to /etc/hosts with the 127.0.0.1 mapping and it should fix it again.

Edited by jdavis413
0

The bizarre but effective solution offered by jdavis413 sure helped me not totally wanna shift back to Eclipse, which breezes through during the SAME debugging. The response time has MAYBE improved 50% which might be psychological, as I do wanna stick to IJ, but nevertheless, still slower than E.

Why does Eclipse not react so weirdly to entries in the hosts ?? Why is IJ so peculiar about it ?

Update -I had to restart browser/server/vm for it to have any effect.

 Update - I had some version of IJ when I got my CentOS VM, then it updated and crazy things started to happen. I then just wiped it out and reinstalled and things are hunky-dory now. I am even starting to get along with the new Find window:)

Edited by rojajet
0

Changing transport of debugger from socket to shared memory solved the issue for me

0

Please sign in to leave a comment.

Have more questions?

Submit a request