空闲时Eclipse中的CPU使用率很高

时间:2012-07-05 14:24:34

标签: java eclipse

在我的多核计算机上,Eclipse使用100到250%的CPU功率,即使在新的普通安装和空工作空间闲置时也是如此。当实际做事时,它变得缓慢而无反应。

我尝试按照此处的建议设置内存设置:Eclipse uses 100 % CPU randomly。这没有用。我还尝试了不同的Java版本,即OpenJDK和Oracle Java 7,以及Eclipse版本的Juno和Indigo。我在Ubuntu 12.04 LTS上。

作为另一个可能不相关的问题,当我关闭Eclipse时,Java进程仍然保持打开状态,CPU使用率超过200%,需要手动终止。

6 个答案:

答案 0 :(得分:20)

我今天遇到了同样的问题,结果却是一个占用CPU的索引线程。我最近在项目中添加了相当多的文件而忘记了它。我意识到其他人不太可能有这个问题,但发布我的调查方式可能会有用。

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

  1. 从命令行启动eclipse并将输出重定向到文件,以便我们可以获得线程转储
  2. 让它稍稍解决,然后获取每个线程的cpu使用情况列表:ps -mo'pid lwp stime time pcpu'-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)转换为十六进制0x1b9b(例如在命令行中使用:printf“0x%x \ n”7067)

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

  5. 打开文件并查找线程的十六进制ID:

    “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

答案 1 :(得分:10)

我在插件方面遇到过这个问题,但从来没有使用Eclipse本身。

您可以尝试通过转到Help > About Eclipse > Installation details并逐个停用插件来调试它。

答案 2 :(得分:10)

我只有在垃圾收集器发疯时才看到这种行为,因为分配的内存确实达到了VM配置的最大内存限制。如果您安装了大型Eclipse,那么您的第一步应始终是increase the memory settings in the eclipse.ini

请同时激活 Window - >偏好 - >一般 - >显示堆状态。它将向您显示Eclipse当前使用的内存量(在状态行中)。如果它达到允许的最大值并且不再下降(即垃圾收集器无法清除未使用的对象),那么这正是我上面所描述的指示。

编辑:了解您使用的Eclipse包也是一件好事,因为默认情况下包含不同的插件。经典,建模,Java EE开发人员,......?

答案 3 :(得分:4)

卸载mylyn插件为我解决了问题,性能提升非常激烈,我将其作为一个6岁问题的答案发布。

转到Help->About Eclipse->Installation Details->Installed Software 并卸载您知道您没有使用的所有插件。我只卸载了mylyn插件,它给我带来了惊喜。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

遇到了同样的问题,在eclipse中通过了VM Argument,它对我来说很好。

-Xmx1300m -XX:PermSize =256米 -XX:MaxPermSize参数=256米