如何减少 Eclipse Ganymede 的内存使用量?

2022-09-01 07:40:15

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

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

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


答案 1

我不知道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/)。如您所见,我更关心的是避免在编辑过程中长时间的暂停,而不是使用精算内存,但您可以将其用作开始。


答案 2

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

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