我在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就会被触发。
我的理解正确吗?
发布于 2018-01-27 06:06:14
在解决JDK-8151176问题之前,IHOP计算有些特殊。它与相对于总堆的活动集大小进行比较,但活动集大小通常不能与总堆大小一样大,因为在测量占用时,年轻区域中的eden和from-space将始终为空。
G1ReservePercent没有计入IHOP,相反,在设置IHOP时需要考虑前者。
总数100%- 15 = 85
这是倒退的。它是关于占用率,而不是自由空间。它就在名字里。
发布于 2018-01-27 23:11:12
在参数定义-XX:InitiatingHeapOccupancyPercent=85中,这意味着标记周期将从总堆的85%开始(这里没有其他参数使用-XX:InitiatingHeapOccupancyPercent)
https://stackoverflow.com/questions/48435943
复制相似问题