【问题标题】:Eclipse not releasing memory in Java process on LinuxEclipse 未在 Linux 上的 Java 进程中释放内存
【发布时间】:2010-11-11 18:24:27
【问题描述】:

我的 Linux 服务器需要能够为开发人员处理 30 多个 eclipse 实例。我对运行 10 个 eclipse 实例进行了快速测试。与每个 Eclipse 相关的 Java 进程最初大约 200MB RSS 内存,当加载更多项目时增加到大约 550MB。

但是在 Eclipse 实例中关闭/删除所有项目后,Java 进程似乎没有释放内存。我仍然看到它使用超过 550MB 的 RSS。

如何更改 Eclipse 或 Java 设置,以便在开发人员关闭项目或闲置一段时间时减少内存占用?

谢谢

【问题讨论】:

  • 在同一台机器上运行 30 多个 Eclipse 实例似乎太多了。你有多少内存?我会为每个实例分配至少 512MB 的空间,然后增加到 1GB 以方便使用。 (当然,这可能取决于您正在进行的开发类型和您需要的插件数量。)正如 Bill K 在他的回答中所说,您可以在 eclipse.ini 中配置 -Xmx 参数。
  • 如果你有 30 个开发者使用同一个服务器,你有多少内存?您会发现开发需要缓存大量文件才能正常运行(这可能超过应用程序的大小),我建议您每个开发人员至少有 1 GB 的缓存,如果不是更多,具体取决于您的大小项目。
  • @Bruno 以同样的评论击败了我,令人毛骨悚然。
  • 我发表此评论是因为我从共享一台 24 GB 的机器转移到了一台 48 GB 的机器,并且看到了显着的改进。 (而且开发人员的数量比 OP 少得多)
  • 如果您在同一台机器上运行多个 JVM,请确保您受益于 Java 1.5 中引入的类数据共享,这将节省跨 JVM 的内存

标签: java linux eclipse memory


【解决方案1】:

您可能想尝试使用这些(和其他)JVM tuning options,以使 JVM 不太愿意将内存返回给操作系统:

-XX:MaxHeapFreeRatio GC 后堆空闲的最大百分比以避免收缩。默认值为 70。 -XX:MinHeapFreeRatio GC 后堆空闲的最小百分比以避免扩展。默认为 40。

但是,我怀疑您不会看到 eclipse 进程缩小到接近其初始大小的任何地方,因为 eclipse 是一个庞大而复杂的应用程序,它可能会延迟加载(但一旦使用就不会卸载)很多类和相关的数据结构。

【讨论】:

  • 哇,酷。从来没有见过。另一方面,我仍然从未见过 Java 释放内存,所以我猜,就像你说的那样,它可能不会有太大帮助。会根据情况调整我的答案。
【解决方案2】:

我从未见过 Java 释放内存。

我不认为你会从 Eclipse 中尝试让它释放内存获得任何价值,我已经观察了这么多年的小内存计数器,但从来没有看到分配的内存下降。

您可以尝试其中一种。 每次会话结束后,退出 JVM 并重新启动。

将你的 -Xmx 设置得更低。

将您的实例分为高 -Xmx 和低 -Xmx 的类别,让用户确定他想要哪一个。

顺便说一句,如果这对您来说真的很重要,您可能能够在一个 VM 下运行多个 Eclipse 实例。这可能是太多的工作(人周到人年),但如果你能做对,你可以将开销减少 150-200mb/实例。缺点是 VM 崩溃(现在非常罕见)会杀死所有人。

测试这个理论将是从现有 JVM 中调用 eclipse 的 main 并尝试让它显示在有用的地方。剩下的时间花在试图找出他们在哪里使用了邪恶的静态变量或单例并将它们更改为其他东西。

【讨论】:

  • 换句话说,这个问题根本不是Eclipse特有的。
  • -1:Java 从不释放内存绝对不是真的。
【解决方案3】:

切换 Java 以使用带有 HeapFreeRatio 参数的 G1 垃圾收集器。在 eclipse.ini 中使用这些选项:

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

现在,当 Eclipse 为一项复杂的操作占用超过 1 GB 的 RAM 并在垃圾收集后切换回 300 MB 时,内存将被释放回操作系统。

【讨论】:

    【解决方案4】:

    我建议检查垃圾收集、设置正确的选项甚至定期强制 GC 可能会增加时间,直到 eclipse 内存使用率增长高。 以下链接可能有用http://www.eclipsezone.com/eclipse/forums/t93757.html

    【讨论】:

      猜你喜欢
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多