High CPU usage in Eclipse when idle

On my multicore machine, Eclipse uses between 100 and 250 % CPU power, even when idling on a new plain install and an empty workspace. When actually doing things, it becomes slow and unresponsive.

I have tried setting the memory settings as suggested here: Eclipse uses 100 % CPU randomly . That did not help. I also tried different Java versions, namely OpenJDK and Oracle Java 7, and Eclipse versions Juno and Indigo. I am on Ubuntu 12.04 LTS.

As another maybe unrelated issue when I close Eclipse the Java process still stays open with over 200% cpu usage and needs to be killed manually.


Solution 1:

I was having the same problem today, and it turned out to be an indexing thread that was occupying the CPU. I had recently added quite a bit of files to a project and had forgotten about it. I realize it's not likely that anyone else has this problem, but it might be useful to post how I investigated it.

I'm running Ubuntu 12.10 with STS based on eclipse Juno.

  1. Start eclipse from the command line and redirect output to a file so we can get a thread dump
  2. Allow it to settle for a bit, then get a listing of the cpu usage for each thread: ps -mo 'pid lwp stime time pcpu' -C java. Here's a sample of the output that identified my cpu hungry thread:

    PID LWP STIME TIME %CPU

    6974 - 07:42 00:15:51 133

    7067 07:42 00:09:49 86.1

  3. Convert the thread id (in my case 7067) to hex 0x1b9b (e.g. in the command line using: printf "0x%x\n" 7067)

  4. Do a thread dump of the java process using kill -3: kill -3 6974. The output is saved in the file you redirected stdout when you started eclipse

  5. Open the file and look for the hex id of the thread:

    "Link Indexer Delayed Write-10" prio=10 tid=0x00007f66b801a800 nid=0x1b9b runnable [0x00007f66a9e46000]

    java.lang.Thread.State: RUNNABLE

    at com.ibm.etools.references.internal.bplustree.db.ExtentManager$WriteBack.r

Solution 2:

I've had this problem with plugins, but never with Eclipse itself.

You can try to debug it by going to Help > About Eclipse > Installation details and disabling the plugins one by one.

Solution 3:

I've seen such behaviour only when the garbage collector went crazy because the allocated memory really reached the configured maximum memory limits of the VM. If you have a large Eclipse installation, your first step should always be to increase the memory settings in the eclipse.ini.

Please also activate Window -> Preferences -> General -> Show heap status. It will show you how much memory Eclipse currently uses (in the status line). If that goes up to the allowed maximum and doesn't drop anymore (i.e. the garbage collector cannot clean up unused objects), then that is exactly the indication for what I described above.

Edit: It would also be good to know what Eclipse package you use, as those contain different plugins by default. Classic, Modeling, Java EE developers,...?