【问题标题】:JVM tuning for few and long GC runs针对少量和长时间 GC 运行的 JVM 调优
【发布时间】:2017-06-06 13:43:40
【问题描述】:

我的服务器应用程序生成了许多年轻的对象,所以我假设伊甸园和幸存者空间很快就被填满了,这会导致频繁的 GC 运行。
我的目标是少跑/长跑,比如每天一次,即使需要几秒钟。

您将如何针对此目标调整 JVM?
我应该使用哪个 GC? (最高 G1)。

可用堆空间约为 4Gb (-Xmx4G)

【问题讨论】:

  • 您是在谈论年轻一代还是老一代系列?此外,发布 GC 日志并指出哪些部分超出了您认为可以容忍的范围。
  • @the8472 我说的是频繁的年轻代收集。
  • 减少长时间运行“full gc”的唯一方法是不要让内存堆积。更频繁地运行 gc 将使堆保持较小。它是您应该调整的“世界暂停”事件(完整 gc)。如果您的应用正在创建大量新对象,那么您应该使用 parallelGC。

标签: java performance garbage-collection jvm


【解决方案1】:

在您的情况下,它会触发频繁的次要 gc。你应该使用"-XX:NewRatio=ratio"

NewRatio 这将决定老年代和年轻代之间的比例。

例如 -XX:NewRatio=3 表示老年代和年轻代的比例为 1:3,伊甸园和幸存者空间的组合大小将是堆的四分之一。

您还可以通过使用 NewSize 和 MaxNewSize 来微调 Eden 和 Survivor 空间,这些参数控制新一代的最小和最大尺寸。

默认NewRation=2,表示老年代和年轻代的比例是1:2。

您可以阅读更多详情here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多