【问题标题】:java GC heap params for G1G1的java GC堆参数
【发布时间】:2018-01-25 04:58:58
【问题描述】:

我在 java 7 中使用下面的 JAVA GC 参数。

-Xmx12g -Xms12g 
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:InitiatingHeapOccupancyPercent=15 -XX:ConcGCThreads=8 -XX:ParallelGCThreads=16 -XX:G1ConcRefinementThreads=17 -XX:+UseCompressedOops -XX:G1ReservePercent=20 -XX:+ParallelRefProcEnabled -XX:+ExplicitGCInvokesConcurrent 

我想知道如果我们看到 GC 被触发,那么堆利用率的百分比是多少。

-XX:G1ReservePercent=20:保留 20%。

-XX:InitiatingHeapOccupancyPercent=15:因此,我认为当我的堆使用 65%(总计 100% - 15 = 85 但保留 20%,因此 65%)时,GC 将被触发。

我的理解正确吗?

【问题讨论】:

标签: java performance garbage-collection


【解决方案1】:

在解决JDK-8151176 之前,IHOP 计算有些特殊。它与相对于总堆的活动集大小进行比较,但活动集大小通常不会像总堆那么大,因为在测量占用率时,年轻区域中的 eden 和 from-space 将始终为空。

G1ReservePercent不计入IHOP,反之,设置后者时需要将前者计入。

总计 100 % - 15 = 85

那是倒退。这是关于占用,而不是可用空间。它就在名称中。

【讨论】:

  • 感谢您的评论。我有点理解你的回答。 -XX:InitiatingHeapOccupancyPercent=15 表示当堆占用15% 时,G1 将开始标记。没关系。是否有任何参数可以说明 GC 将触发的堆利用率百分比是多少?
  • 请求您的意见先生!
  • @VJS 一旦完成并发标记周期,它将自动开始进行混合收集。
【解决方案2】:

从参数定义 -XX:InitiatingHeapOccupancyPercent=85 , 这意味着标记周期将从总堆的 85% 开始(这里没有其他参数与 -XX:InitiatingHeapOccupancyPercent 结合在一起)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2019-11-12
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多