虽然我发现了类似的问题,但我似乎已经没有什么建议了,我想问问 SO 我剩下要做的事情。
我在使用 Eclipse 时内存不足,几个小时后它开始爬行,以至于我不得不强制退出。最初它会挂起并说“堆空间内存不足”之类的话。我在 SO 上搜索了以下内容:
Eclipse indexer hangs with 100% cpu
Eclipse running out of memory
Eclipse java heap space out of memory
所以我开始采纳所有建议,但改进微乎其微。这是我当前的所有更改。
我一直在使用 eclipse -debug .options 运行 eclipse,这样我就可以检查内存使用情况
.options 文件的位置:
org.eclipse.cdt.core/debug/pdomtimings=true
org.eclipse.cdt.core/debug/indexer=true
org.eclipse.cdt.core/debug/parser=true
org.eclipse.cdt.core/debug/deltaprocessor=true
org.eclipse.cdt.core/debug/scanner=true
org.eclipse.cdt.core/debug/model=true
我已经更新了我的 /etc/eclipse.ini 文件(在 -Xmx384m 之前,所以现在最大尺寸要大得多)
openFile
-vmargs
-XX:MaxPermSize=256m
-Xms40m
-Xmx2048m
我还更新了索引器选项(窗口 -> 首选项 -> C/C++ -> 索引器)
Cache limit relative to heap size: 25%
Absolute limit: 256 MB
Header file cache: 256 MB
我还取消选中 Project -> Build Automatically 因为在任何更改时它都会暂时挂起并构建工作区
我还更新了历史选项(窗口 -> 首选项 -> 常规 -> 工作区 -> 本地历史)
Days to Keep files: 1
Maximum entries per file: 50
Maximum file size (MB): 1
最后,在资源过滤器(项目 -> 属性 -> 资源 -> 资源过滤器)中,我告诉它忽略匹配 *dox 的索引文件和文件夹
Exclude all: Name matches *dox (file and folders)
当它开始变得 super 慢时,我会在我运行 eclipse 的地方按下 ctrl +\,我会看到它使用了 100% 的堆空间。尝试将最大大小 (-Xmx) 增加到 2048 MB 以上会导致它提示无法启动 VM,但我想知道这是否不是我给它提供多少空间的问题。
我让进度窗口保持打开状态,这样我就可以看到它正在尝试做什么,通常它在索引时似乎变慢了,但是当它爬行时,它会非常糟糕,以至于仅仅滚动似乎就会让它挂起。我通常别无选择,只能关闭 Eclipse 并重新打开(大约 2 小时后)。
还有什么可以尝试的?这仅仅是内存问题吗?还有什么可以让我发现它开始爬行的原因?
这是在 Ubuntu 12.04 和 Eclipse 3.7.2 以及 Java OpenJDK 1.6.0_30-b30 上
最佳答案
经过 1 个月的出色 CDT-Eclipse 工作后,我今天突然遇到了同样的问题。我曾尝试增加内存参数,卸载插件等但无果。但比我发现真正有用的建议:
"Whenever you create a new workspace for a Mozilla source tree, you should be sure to turn off the following two settings in the workspace preferences (Window > Preferences, or Eclipse > Preferences) before creating a project in that workspace:
- in "General > Workspace", disable "Build automatically"
- in "C/C++ > Indexer", disable "Automatically update the index"
https://developer.mozilla.org/en-US/docs/Eclipse_CDT
我的问题消失了。
关于java - Eclipse 内存不足且运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22640870/