我的eclipse有时会非常自发地使用100%的CPU。 我无法弄清楚为什么它需要那么多CPU使用率。没有像“建筑工作空间”这样的后台任务。
经过一段时间后,CPU负载降至0并且一切正常。
我在workspace/.metadata/.log
档案中找不到与此问题相关的任何信息。
有没有人提示如何弄清楚eclipse的哪个部分如此频繁地使用CPU?有没有办法获得eclipse的线程转储?日食过程中的kill -3
没有做任何事情。
Eclipse版本:Galileo JavaEE
操作系统:Linux 2.6.31
答案 0 :(得分:12)
听起来像垃圾收集
您可以尝试更改eclipse.ini中的设置,可能使用更高的Xmx值
--launcher.XXMaxPermSize
256m
-vmargs
-Xms256m
-Xmx1024m
-XX:PermSize=64m
-Xss1M
-server
-XX:+DoEscapeAnalysis
-XX:+UseConcMarkSweepGC
答案 1 :(得分:8)
您可以使用visualvm来分析eclipse,获取堆转储或线程转储,查看正在运行的线程等。
答案 2 :(得分:4)
如果有其他人遇到这个问题,我自己解决了。 将选项“自动构建项目”设置为关闭。这应该会删除Eclipse使用的大量CPU。
答案 3 :(得分:2)
对于我的安装,我注意到堆状态指示器(启用VIA窗口>首选项"显示堆状态"在常规下)显示的最大堆数少于在eclipse.ini(-Xmx设置)中分配的最大堆数。状态指示器正在反弹,表明垃圾收集正在努力保持低内存。
增加初始/最小堆大小(-Xms设置)似乎导致Eclipse / Java停止尝试管理内存。
答案 4 :(得分:2)
只要需要,Eclipse就会从内存中加载和卸载信息。如果您的工作空间很大,并且您使用多个项目,并且您的eclipse配置为使用低容量内存,这是正常的。有人建议上面更改xmx和xms值,以便你的eclipse使用更多的内存(如果你有的话)我建议你把相同的值放到它们两个上面。例如,eclipse.ini文件中的-Xms4048m和-Xmx4048m(或更多)。这样,一旦启动IDE,系统将尝试使用该空间,并且垃圾收集器(GC)处理数据所需的时间更短。
答案 5 :(得分:1)
Just add the following line to your vmargs
in eclipse.ini
-XX:+DisableExplicitGC
This prevents the GC from thrashing (the cause of the 100% CPU thread usage)
Note that this problem still persists as of Eclipse Oxygen release. It occurs when you have too many plugins and large projects open for your hardware to support.
It would be nice if Eclipse would profile the hardware and configure itself to prevent this.