一尘不染

Eclipse将堆释放回系统

linux

我正在将Eclipse 3.6与Linux(64位)上的最新Sun Java
6配合使用,并具有大量的大型项目。在某些特殊情况下(例如,SVN更新),Eclipse需要多达1 GB的堆。但是大多数时候它只需要350
MB。当我启用堆状态面板时,大部分时间都会看到以下信息:

878M中的350M

我使用以下设置启动Eclipse:-Xms128m -Xmx1024m

因此,大多数情况下,大量的MB被浪费掉了,并且当内存使用量在短时间内达到峰值时很少被使用。我一点都不喜欢,我希望Eclipse将内存释放回系统,以便可以将其用于其他程序。

当Eclipse需要更多内存而可用内存不足时,Linux不能交换其他正在运行的程序,我可以接受。我听说有一个-
XX:MaxHeapFreeRatio选项。但是我从来没有想过要使用什么值才能起作用。我尝试过的价值没有任何改变。

那么,如何告诉Eclipse(或Java)释放未使用的堆呢?


阅读 187

收藏
2020-06-07

共1个答案

一尘不染

找到了解决方案。我将Java切换为使用G1垃圾收集器,现在HeapFreeRatio参数按预期工作。因此,我在eclipse.ini中使用以下选项:

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:MinHeapFreeRatio=5
-XX:MaxHeapFreeRatio=25

现在,当Eclipse消耗了超过1 GB的RAM进行复杂的操作,并在垃圾回收后又切换回300 MB时,实际上已将内存释放回操作系统。

2020-06-07