34

我使用最近发布的 Eclipse 的 Ganymede,特别是 Java EE 和 Web 开发人员的发行版。我安装了一些额外的插件(例如 Subclipse、Spring、FindBugs)并删除了所有 Mylyn 插件。

我没有在 Eclipse 中做任何特别繁重的事情,例如启动应用服务器或连接到数据库,但由于某种原因,在使用几个小时后,我发现 Eclipse 正在使用接近 500MB 的内存。

有谁知道为什么 Eclipse 使用这么多内存(泄漏?),更重要的是,如果我能做些什么来改进它?

4

13 回答 13

34

我不特别了解 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-19T13:55:15.563 回答
3

我认为 JVM 不会做很多垃圾收集,除非它必须这样做(即它达到了它的极限)。因此,它会获取它可以获得的所有内存,可能达到 eclipse.ini 中设置的限制(-Xmx 参数,此处设置为 512MiB)。

您可以通过检查“首选项”->“常规”->“显示堆状态”来获得当前堆状态的直观表示。它将在状态栏中创建一个小仪表,该仪表还有一个“垃圾桶”按钮,您可以使用它来触发手动垃圾收集。

于 2008-09-18T17:41:45.817 回答
3

Ganymede Java EE 插件在内存中运行时绝对是巨大的。此外,我在长时间的编码过程中对 FindBugs 及其可靠性有过不好的体验。

如果你不能没有这些插件,那么你唯一的办法就是开始关闭项目。如果您限制工作区中打开的项目的数量,编译器(和 FindBugs)将不必担心,并且您的内存使用量将大幅下降。

我通常按​​客户划分我的工作区,然后只在每个工作区中打开最低限度的项目。请注意,如果您有一个特别大的项目(尤其是那些有很多由 WST 检查的文件的项目),那不仅会消耗您的内存,还会在编译时导致明显的响应暂停。

于 2008-09-18T16:58:49.010 回答
3

仅供参考,

  • 你可以加

    -Dcom.sun.management.jmxremote

到您的 eclise.ini 文件,启动 eclipse,然后通过 jdk 安装中的“jconsole.exe”监控其内存使用情况。

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

选择'Connection/New connection/'eclipse'来监控eclipse使用的内存

  • 总是使用最新的 jvm 来启动你的 eclipse(这并不妨碍你使用任何其他 jfk 在 eclipse 中编译你的项目)
于 2008-09-19T11:28:45.520 回答
2

我称它为臃肿,但不漏水。(如果它是泄漏的,它会不断爬升,直到发生碰撞。)正如其他人所说,内存很便宜! 对我来说,这似乎是一个简单的决定:在更多内存上花费一点点而不是因为您没有运行 Eclipse @ 500MB 的内存预算而降低生产力。

总结反问:什么更有价值:

  1. 使用您熟悉的 IDE 和您想要的插件获得的生产力,或
  2. 在一些内存上花费 50-200 美元?
于 2008-09-18T17:13:54.183 回答
2

Eclipse 是一个相当臃肿的 IDE。您可以通过在 Project -> Build Automatically 下打开自动项目构建来最小化它。关闭您当前未在处理的任何打开的项目也可以帮助它。

于 2008-09-18T16:59:58.540 回答
2

Eclipse 本身就相当臃肿,您添加的插件越多只会使情况恶化。它仍然是我最喜欢的 IDE,因为它确实不缺功能,但是如果您正在寻找一个轻量级的 IDE,那么我建议您放弃 Eclipse;如果你让它运行一段时间,运行半个内存是很正常的。

于 2008-09-18T16:49:48.250 回答
1

我遇到了基于 java 的程序内存消耗的问题。我发现它可能与选择的 jvm 有关(在我的情况下是这样)。尝试使用 -client 开关运行 eclipse。

在某些操作系统(我相信大多数 linux 发行版)中,默认选项是服务器 vm,当使用 gui 运行应用程序时,它会消耗更多的内存。

在我的例子中,初始内存占用从 300MB 下降到 80MB。

对不起我蹩脚的英语。我希望我有所帮助。

所有的问候 Arkadiusz Jamrocha

于 2011-07-21T11:51:33.293 回答
1

与其抱怨 Eclipse 占用了多少内存,不如继续分析问题出在哪里。我可能只是一个插件。

在此处查看博客: “分析 eclipse 的内存消耗”

问候, 马库斯

于 2008-10-20T15:45:55.307 回答
1

RAM 相对便宜(并不是说这是内存管理不善的借口)。未使用的内存本质上是 WASTED 内存。如果您遇到限制并且 IDE 是问题,请考虑减少多任务处理、调整内存需求或购买更多。如果那是您的基本 IDE,我不会削弱 Eclipse。

于 2008-09-18T16:55:41.390 回答
0

我通常为 Eclipse 提供 512 MB 的 RAM(使用 JVM 的 -Xmx 选项),而且我对 Ganymede 没有任何内存问题。几个月前我升级到了 2 GB 的 RAM,我真的可以推荐它。它制造了巨大的差异。

于 2008-09-18T20:03:26.867 回答
0

好吧,您没有指定发生在哪个平台上。如果您使用的是 Windows XP、Vista、Linux、OS X,内存管理可能会有所不同...

通常,在我的计算机(带有 1Gb 内存的 WinXP)上,Eclipse 占用的空间很少超过 200Mb,这取决于打开的项目的大小、加载的插件和正在进行的操作。

于 2008-09-18T16:52:01.210 回答
-1

Eclipse 通常会在内存中保留大量元数据,以支持各种 IDE 操作。

我发现 Eclipse 的默认配置适用于大多数用途,并且包括对可以消耗多少内存的限制(由 JVM 显式或隐式给出),并且 Eclipse 将保持在该范围内。

您是否有任何特殊原因担心内存使用?

于 2010-03-29T13:08:28.017 回答