【问题标题】:How do I know when to tuning Heap size when using G1 GC?使用 G1 GC 时如何知道何时调整堆大小?
【发布时间】:2019-03-19 19:02:58
【问题描述】:

在 Oracle 的 G1 GC 文档中,G1 GC 不建议调整 JVM 选项,因为吞吐量和延迟是稳定的。

https://docs.oracle.com/javase/10/gctuning/garbage-first-garbage-collector-tuning.htm#JSGCT-GUID-0BB3B742-A985-4D5E-A9C5-433A127FE0F6

但是,我在文档中找不到说明服务器堆大小应该是多少合适的页面。 服务器的用途和流量会有所不同。 它可以是一个简单的 Restful API,也可以是一个耗时的任务。 因此,堆大小应根据服务器应用程序而有所不同。 此外,如果堆大小不足,会发生多次Full GC,最终导致严重问题。

  1. 如何确定合适的初始堆大小?
  2. 什么时候应该增加堆大小?
  3. 有监测异常体征的方法和工具吗?

【问题讨论】:

    标签: java java-8 jvm heap-size g1gc


    【解决方案1】:

    我愿意

    • 为您要优化的工作负载创建基准
    • 性能调整应用程序以分配此工作负载。这可以改变你所做的一切,所以先做。例如使用飞行记录器。
    • 尝试使用不同堆大小的应用程序,看看在什么时候添加更多内存似乎没有任何影响。
    • 如果有时间,请尝试更多工作负载。

    如何确定合适的初始堆大小?

    应用程序几乎立即增长到什么大小?如果您使用更大的尺寸进行基准测试,它似乎有帮助吗?

    什么时候应该增加堆大小?

    当确定您的应用程序没有内存泄漏并且经过合理调整后,服务器需要更多内存,或者如果它有更多内存会运行得更快。

    有监测异常迹象的方法和工具吗?

    对于一个可以连续运行的工具,你可以从jstat开始

    【讨论】:

      猜你喜欢
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 2018-07-09
      相关资源
      最近更新 更多