Eclipse中闲置时的CPU使用率较高

在我的多核机器上,Eclipse使用100%到250%的CPU功率,即使在新的普通安装和空的工作空间上闲置。 实际做事情时,变得缓慢而没有反应。

我已经尝试按照以下build议设置内存设置: Eclipse随机使用100%的CPU 。 这没有帮助。 我也尝试了不同的Java版本,即OpenJDK和Oracle Java 7,以及Eclipse版本的Juno和Indigo。 我在Ubuntu 12.04 LTS上。

另一个可能与我无关的问题是,当我closuresEclipse时,Java进程仍然保持打开状态,CPU使用率超过200%,需要手动终止。

我今天遇到同样的问题,结果是占用CPU的索引线程。 我最近在一个项目中增加了很多文件,并忘记了它。 我意识到其他任何人都不可能有这个问题,但是发布我如何调查它可能是有用的。

我使用基于eclipse Juno的STS运行Ubuntu 12.10。

  1. 从命令行启动eclipse并将输出redirect到一个文件,这样我们就可以得到一个线程转储
  2. 让它解决一下,然后得到每个线程的CPU使用情况清单:ps -mo'pid lwp stime time pcpu'-C java。 下面是一个确定我的cpu饥饿线程的输出示例:

    PID LWP STIME TIME%CPU

    6974 – 07:42 00:15:51 133

    7067 07:42 00:09:49 86.1

  3. 将线程ID(在我的情况下,7067)转换为hex0x1b9b(例如在命令行中使用:printf“0x%x \ n”7067)

  4. 使用kill -3:kill -3 6974执行java进程的线程转储。当您启动eclipse时,输出保存在您redirectstdout的文件中

  5. 打开文件并查找线程的hexid:

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

    java.lang.Thread.State:RUNNABLE

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

我有这个插件的问题,但从来没有与Eclipse本身。

您可以尝试转到Help > About Eclipse > Installation details并逐个禁用插件来进行debugging。

我只有在垃圾收集器疯狂的时候才看到这样的行为,因为分配的内存真的达到了虚拟机configuration的最大内存限制。 如果你有一个大的Eclipse安装,你的第一步应该是增加eclipse.ini中的内存设置 。

也请激活窗口 – >首选项 – >常规 – >显示堆状态 。 它会告诉你Eclipse有多less内存使用(在状态行中)。 如果达到允许的最大值并且不再下降(即垃圾收集器不能清理未使用的对象),那么这正是我上面描述的指示。

编辑:这也是很好的知道你使用的Eclipse包,因为那些默认包含不同的插件。 经典,build模,Java EE开发人员,…?

Javamultithreading垃圾收集器是垃圾。 在java命令行中添加-XX:-UseLoopPredicate选项。 见例如错误https://bugzilla.redhat.com/show_bug.cgi?id=882968

面临同样的问题,通过在日食虚拟机参数,它对我工作得很好。

-Xmx1300m -XX:PermSize = 256m -XX:MaxPermSize = 256m