关于java:如何减少Eclipse Ganymede的内存使用量?

关于java:如何减少Eclipse Ganymede的内存使用量?

How can I reduce Eclipse Ganymede's memory use?

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

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

有人知道为什么Eclipse使用如此多的内存(泄漏)吗?更重要的是,如果我有什么办法可以改善这一点?


我不特别了解Eclipse,我使用的IntelliJ也受内存增长的影响(无论您是否正在积极使用它!)。无论如何,在IntelliJ中,我无法消除问题,但是通过使用运行时VM选项,确实减慢了内存的增长。您可以尝试在Eclipse中重置它们,看看它们是否有所不同。

您可以在eclipse文件夹的eclipse.ini文件中编辑VM选项。

我发现(在IntelliJ中)垃圾收集器设置对内存增长的速度影响最大。

我的设置是:

1
2
3
4
5
6
7
8
-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/)。如您所见,与实际内存使用相比,我更关心的是避免在编辑过程中长时间停顿,但是您可以以此为起点。


仅供参考,

  • 您可以添加

    -Dcom.sun.management.jmxremote

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

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

选择'连接/新建连接/'eclipse'以监视eclipse使用的内存

  • 始终使用最新的jvm启动eclipse(这不会阻止您使用任何其他jfk在eclipse中编译项目)

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

通过选择"首选项"->"常规"->"显示堆状态",可以直观地看到当前堆状态。它将在状态栏中创建一个小规,其中还有一个"垃圾箱"按钮,可用于触发手动垃圾收集。


Ganymede Java EE插件在内存中运行时绝对庞大。另外,我在使用FindBugs及其在长时间的编码过程中的可靠性方面也遇到了不好的经验。

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

我通常按客户划分工作区,然后仅在每个工作区中打开最少的项目。请注意,如果您有一个特别大的项目(尤其是那些带有WST检查的很多文件的项目),那么这不仅会占用您的内存,还会在编译时引起明显的响应暂停。


我会称它为ated肿,但不会漏气。 (如果泄漏,它将爬上去直到有东西撞坏。)正如其他人所说,内存很便宜!对我来说,这似乎是一个简单的决定:花一点点钱在更多的内存上而不是提高生产力,因为您没有足够的内存预算来运行Eclipse @ 500MB。

概括的反问:什么更有价值:

  • 通过将所需的IDE与所需的插件一起使用可以提高工作效率,或者
  • 在某些内存上花费$ 50-200?

  • Eclipse是一个非常庞大的IDE。您可以通过在项目->自动构建下打开自动项目构建来最小化它。关闭任何当前不在打开的项目也可以提供帮助。


    Eclipse本身非常肿,您添加的更多插件只会加剧这种情况。它仍然是我最喜欢的IDE,因为它的功能肯定不短,但是如果您正在寻找轻量级的IDE,那么我建议您放弃Eclipse。如果您让内存运行一段时间,则正常运行半个内存是很正常的。


    我对基于Java的程序的内存消耗有疑问。我发现它可能与所选的jvm有关(以我为例)。尝试使用-client开关运行Eclipse。

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

    在我的情况下,初始内存占用从300MB减少到80MB。

    对不起,我的英语不好。希望我能帮上忙。

    所有问候
    Arkadiusz Jamrocha


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

    在此处查看博客:
    "分析Eclipse的内存消耗"

    关于,
    马库斯


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


    我通常给Eclipse 512 MB的RAM(使用JVM的-Xmx选项),并且Ganymede没有任何内存问题。几个月前,我已升级到两个GB的RAM,我真的可以推荐它。这有很大的不同。


    好吧,您没有指定在哪个平台上发生这种情况。如果您使用的是Windows XP,Vista,Linux,OS X,...

    ,则内存管理可能会有所不同。

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


    Eclipse通常会在内存中保留大量元数据,以允许进行各种类型的IDE体操。

    我发现Eclipse的默认配置在大多数情况下都能很好地工作,并且包括可以消耗多少内存的限制(由JVM显式或隐式指定),并且Eclipse将保留在其中。

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


    推荐阅读