在我的多核计算机上,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%,需要手动终止。
答案 0 :(得分:20)
我今天遇到了同样的问题,结果却是一个占用CPU的索引线程。我最近在项目中添加了相当多的文件而忘记了它。我意识到其他人不太可能有这个问题,但发布我的调查方式可能会有用。
我正在使用基于eclipse Juno的STS运行Ubuntu 12.10。
让它稍稍解决,然后获取每个线程的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
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米