Eclipse将堆释放回系统

kay*_*ahr 3 java eclipse linux heap

我正在使用Eclipse 3.6和Linux(64位)上的最新Sun Java 6以及大量项目.在某些特殊情况下(例如SVN更新),Eclipse需要最多1 GB的堆.但大多数时候它只需要350 MB.当我启用堆状态面板时,我大部分时间都会看到这个:

350M的878M

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

因此,大多数时候MB的大量浪费只是在内存使用达到峰值时很少使用.我根本不喜欢它,我希望Eclipse将内存释放回系统,所以我可以将它用于其他程序.

当Eclipse需要更多内存而没有足够的可用RAM而Linux可以换掉其他正在运行的程序时,我可以忍受.我听说有一个-XX:MaxHeapFreeRatio选项.但我从来没有弄清楚我必须使用什么价值,所以它有效.没有任何价值我试过有所作为.

那么我如何告诉Eclipse(或Java)发布未使用的堆?

kay*_*ahr 11

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

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:MinHeapFreeRatio=5
-XX:MaxHeapFreeRatio=25
Run Code Online (Sandbox Code Playgroud)

现在,当Eclipse为一项复杂的操作耗尽超过1 GB的RAM并在垃圾收集后切换回300 MB时,内存实际上会释放回操作系统.