首页 文章

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

提问于
浏览
39

在我的多核机器上,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

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

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

    • 从命令行启动eclipse并将输出重定向到文件,以便我们可以获得一个线程转储

    • 允许它稍微解决,然后得到每个线程的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

    • 将线程id(在我的情况下为7067)转换为十六进制0x1b9b(例如在命令行中使用:printf“0x%x \ n”7067)

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

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

    "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

  • 4

    我有插件这个问题,但从来没有使用Eclipse本身 .

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

  • 20

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

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

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

  • 10

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

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

  • 10

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

  • 0

    面对同样的问题,在eclipse中传递了VM Argument,它对我来说很好 .

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

相关问题