我使用的是Eclipse的最新Ganymede版本,特别是面向Java和web开发人员的发行版。我已经安装了一些额外的插件(例如Subclipse,Spring,FindBugs),并删除了所有的Mylyn插件。
我不会在Eclipse中执行任何特别繁重的操作,例如启动应用程序服务器或连接到数据库,但是由于某些原因,在使用了几个小时后,我发现Eclipse使用了接近500MB的内存。
有没有人知道为什么Eclipse使用这么多内存(leaky?),更重要的是,我能做些什么来改善这一点吗?
发布于 2008-09-19 13:55:16
我并不特别了解Eclipse,我使用的是IntelliJ,它也会受到内存增长的影响(不管您是否在积极使用它!)。无论如何,在IntelliJ中,我不能消除这个问题,但我确实通过使用运行时VM选项来减缓内存增长。您可以尝试在Eclipse中重置它们,看看它们是否有所不同。
您可以在eclipse文件夹的eclipse.ini文件中编辑VM选项。
我发现(在IntelliJ中)垃圾收集器设置对内存增长速度的影响最大。
我的设置是:
-Xms128m
-Xmx512m
-XX:MaxPermSize=120m
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing(有关各个设置的说明,请参阅http://piotrga.wordpress.com/2006/12/12/intellij-and-garbage-collection/ )。正如您所看到的,我更关心的是在编辑过程中避免长时间的停顿,而不是实际的内存使用情况,但您可以将此作为一个开始。
发布于 2008-09-18 16:58:49
Ganymede Java EE插件在内存中运行时绝对非常庞大。此外,在长时间的编码过程中,我对FindBugs和它的可靠性也有不好的体验。
如果你离不开这些插件,那么你唯一的办法就是开始关闭项目。如果您限制工作区中打开的项目的数量,编译器(和FindBugs)将不必担心,并且您的内存使用量将大幅下降。
我通常会按客户划分我的工作区,然后只在每个工作区内保持最低限度的项目打开。请注意,如果你有一个特别大的项目(特别是那些WST检查了大量文件的项目),这不仅会消耗你的内存,还会在编译时导致明显的响应暂停。
发布于 2008-09-18 17:41:46
我不认为JVM会进行大量的垃圾回收,除非迫不得已(也就是说,它已经达到了极限)。因此,它会占用它能获得的所有内存,可能会达到eclipse.ini中设置的限制( -Xmx参数,这里设置为512MiB )。
您可以通过检查'Preferences‘-> 'General’-> 'Show heap status‘获得当前堆状态的可视化表示。它将在状态栏中创建一个小仪表,其中也有一个‘垃圾桶’按钮,您可以使用它来触发手动垃圾收集。
https://stackoverflow.com/questions/94331
复制相似问题