java - Eclipse 释放堆回到系统

标签 java linux eclipse heap-memory

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

878M 中的 350M

我使用这些设置启动 Eclipse:-Xms128m -Xmx1024m

所以大多数时候,大量的 MB 只是被浪费了,只是在内存使用量短时间内达到峰值时很少被使用。我一点也不喜欢这样,我希望 Eclipse 将内存释放回系统,这样我就可以将它用于其他程序。

当 Eclipse 需要更多内存而没有足够的空闲 RAM 以至于 Linux 无法换出其他正在运行的程序时,我可以忍受。我听说有一个 -XX:MaxHeapFreeRatio 选项。但是我从来没有弄清楚我必须使用什么值才能起作用。我尝试过的任何值都没有产生任何影响。

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

最佳答案

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

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

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

关于java - Eclipse 释放堆回到系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3776041/

相关文章:

java - ACM 401-在线回教在线法官给出错误的答案

java - 不幸的是,该应用程序已停止 - LogCat 产生无数错误

java - 我可以在eclipse中配置包含java源文件的资源路径吗?

java - 这个持久性单元配置有什么问题?

java - Gradle中的依赖阴影

c - 我使用 sprintf() 然后也不能为 cp 文件应用 system()

linux - 为什么gdb在core文件中提示 "Unexpected size of section ` .reg-xstate/xxxxx'?

java - 调试时如何显示对象中字段的值?

java - Apache HttpComponents 的替代品?

linux - bluez:并行扫描和连接