我如何减少Eclipse Ganymede的内存使用量?
我使用最近的Ganymede Eclipse版本,特别是面向Java EE和Web开发人员的发行版。 我已经安装了一些额外的插件(例如Subclipse,Spring,FindBugs)并删除了所有的Mylyn插件。
我不会在Eclipse中做任何特别重的任务,例如启动应用服务器或连接到数据库,但出于某种原因,在几个小时的使用后,我看到Eclipse正在使用接近500MB的内存。
有人知道为什么Eclipse使用如此多的内存(泄漏?),更重要的是,如果有什么我可以做的,以改善这一点?
我不知道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/)。 正如你所看到的,我更关心在编辑过程中避免长时间的停顿,而不是真正的内存使用,但是你可以用它作为开始。
我不认为JVM做了很多垃圾收集,除非它必须(即它已经到了极限)。 因此,它捕获它可以获得的所有内存,可能达到eclipse.ini中设置的限制(-Xmx参数,在此设置为512MiB)。
您可以通过选中'首选项' - >'常规' - >'显示堆状态'来获得当前堆状态的直观表示。 它将在状态栏中创建一个小标尺,该标尺还具有可用于触发手动垃圾回收的“垃圾箱”按钮。
仅供参考,
你可以加
-Dcom.sun.management.jmxremote
到你的eclise.ini文件,启动eclipse,然后通过jdk安装中找到的'jconsole.exe'监视它的内存使用情况。
C:[jdk1.6.0_0x path]binjconsole.exe
选择'Connection / New connection /'eclipse'来监控eclipse使用的内存