G1的GC GC堆参数

时间:2018-01-25 04:58:58

标签: java performance garbage-collection

我正在使用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将被触发。

我的理解是否正确?

2 个答案:

答案 0 :(得分:0)

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

G1ReservePercent不计入IHOP,相反,你需要在设置后者时考虑前者。

  

总计100% - 15 = 85

那是倒退。这是关于占用,而不是免费空间。它名就在那里。

答案 1 :(得分:0)

从参数定义-XX:InitiatingHeapOccupancyPercent = 85, 这意味着标记周期将从总堆的85%开始(此处没有其他参数用-XX标记:InitiatingHeapOccupancyPercent)