Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么';t G1在达到初始高级职业能力时开始标记循环?_Java_Garbage Collection_G1gc - Fatal编程技术网

Java 为什么';t G1在达到初始高级职业能力时开始标记循环?

Java 为什么';t G1在达到初始高级职业能力时开始标记循环?,java,garbage-collection,g1gc,Java,Garbage Collection,G1gc,根据,XX:InitiatingHeapOccupancyPercent 设置触发标记周期的Java堆占用阈值。 默认占用率为整个Java堆的45% 在我目前的环境中,这种情况不会发生 我的G1垃圾收集配置如下 -Xms25000m -Xmx25000m -XX:+UseG1GC -XX:maxgc=1000 -XX:GCTimeRatio=99 -XX:InitiatingHeapOccupancyPercent=70 -XX:MaxTenuringThreshold=8 -XX:+解除锁定E

根据,
XX:InitiatingHeapOccupancyPercent

设置触发标记周期的Java堆占用阈值。 默认占用率为整个Java堆的45%

在我目前的环境中,这种情况不会发生

我的G1垃圾收集配置如下

-Xms25000m
-Xmx25000m
-XX:+UseG1GC
-XX:maxgc=1000
-XX:GCTimeRatio=99
-XX:InitiatingHeapOccupancyPercent=70
-XX:MaxTenuringThreshold=8
-XX:+解除锁定Experimentalvmoptions
-XX:G1MixedAccountTarget=16
-XX:G1oldcSetRegionResholdPercent=3
-XX:G1NewSizePercent=30
-XX:G1RSetUpdatingPauseTimePercent=5
对于25g堆和70%的
XX:initiatingHeapOccupencyPercent
,您可能希望在18g被占用时开始标记周期。我正在跟踪垃圾收集日志,但那没有发生

以下是摘录:

{GC调用前堆=592(完全0):
垃圾第一堆总计25600000K,使用22802164K[0x00000001a5800000,0x00000001a60061a8,0x00000007c0000000)
区域大小8192K,1526名年轻人(12500992K),25名幸存者(204800K)
元空间使用37386K,容量37948K,提交38144K,保留1083392K
类空间使用3948K,容量4080K,提交4096K,保留1048576K
2016-04-20T22:06:38.272+0000:4213.406:[GC暂停(GCLocker启动GC)(年轻)
所需幸存者大小801112064字节,新阈值8(最大8)
-年龄1:98537800字节,总计98537800
-年龄2:7053912字节,总计105591712
-年龄3:6556320字节,总计112148032
-年龄4:8836064字节,总计120984096
-年龄5:5725448字节,总计126709544
-年龄6:6702728字节,总计133412272
-年龄7:3831920字节,总计137244192
-年龄8:4166336字节,总计141410528
4213.406:[G1工效学(CSet构造)开始选择CSet,_待定卡:184844,预测基准时间:44.67毫秒,剩余时间:955.33毫秒,目标暂停时间:1000.00毫秒]
4213.406:[G1工效学(CSet构造)向CSet添加年轻区域,伊甸园:1501个区域,幸存者:25个区域,预测年轻区域时间:21.21毫秒]
4213.406:[G1工效学(CSet构造)完成选择CSet,伊甸园:1501个区域,幸存者:25个区域,旧区域:0个区域,预测暂停时间:65.88 ms,目标暂停时间:1000.00 ms]
4213.475:[G1工效学(堆大小调整)尝试堆扩展,原因:最近的GC开销高于GC后的阈值,最近的GC开销:1.40%,阈值:1.00%,未提交:0字节,计算的扩展量:0字节(20.00%)]
,0.0687163秒]
[并行时间:61.7毫秒,GC工作人员:28]
[GC工作人员启动(毫秒):最小值:4213406.9,平均值:4213407.1,最大值:4213407.3,差值:0.4]
[外部根扫描(ms):最小值:6.0,平均值:6.2,最大值:6.4,差异:0.4,总和:173.1]
[更新RS(ms):最小值:33.5,平均值:34.0,最大值:34.6,差异:1.1,总和:951.9]
[已处理缓冲区:最小值:27,平均值:36.6,最大值:48,差异:21,总和:1024]
[扫描RS(ms):最小值:0.1,平均值:0.2,最大值:0.5,差值:0.4,总和:6.3]
[代码根扫描(ms):最小值:0.0,平均值:0.0,最大值:0.0,差异:0.0,总和:0.1]
[对象副本(毫秒):最小值:20.1,平均值:20.6,最大值:20.8,差异:0.7,总和:577.5]
[终端(毫秒):最小值:0.0,平均值:0.0,最大值:0.0,差异:0.0,总和:0.7]
[终止尝试:最小值:1,平均值:13.2,最大值:19,差异:18,总和:371]
[GC-Worker-Other(ms):最小值:0.0,平均值:0.2,最大值:0.4,差值:0.3,总和:4.7]
[GC工作人员总数(ms):最小值:60.9,平均值:61.2,最大值:61.6,差值:0.6,总和:1714.2]
[GC工作端(ms):最小值:4213468.2,平均值:4213468.3,最大值:4213468.5,差值:0.3]
[代码根修复:0.4毫秒]
[代码根清除:0.0毫秒]
[清晰CT:1.2毫秒]
[其他:5.4毫秒]
[选择CSet:0.0毫秒]
[参考程序:0.5毫秒]
[参考Enq:0.0毫秒]
[重拨卡:0.8毫秒]
[超大寄存器:0.2毫秒]
[大量回收:0.0毫秒]
[免费CSet:2.4毫秒]
[伊甸园:11.7G(11.7G)->0.0B(11.7G)幸存者:200.0M->200.0M堆:21.7G(24.4G)->10.0G(24.4G)]
GC调用后的堆=593(完全0):
垃圾第一堆总计25600000K,使用10516798K[0x00000001a5800000,0x00000001a60061a8,0x00000007c0000000)
区域大小8192K,25名年轻人(204800K),25名幸存者(204800K)
元空间使用37386K,容量37948K,提交38144K,保留1083392K
类空间使用3948K,容量4080K,提交4096K,保留1048576K
}
[次数:用户=1.70系统=0.01,实际=0.07秒]
2016-04-20T22:06:38.342+0000:4213.475:应用程序线程停止的总时间:0.0701353秒,停止线程的时间:0.0001600秒
我会提请你注意的

{GC调用前堆=592(完全0):
垃圾第一堆总计25600000K,使用22802164K[0x00000001a5800000,0x00000001a60061a8,0x00000007c0000000)
[...]
[伊甸园:11.7G(11.7G)->0.0B(11.7G)幸存者:200.0M->200.0M堆:21.7G(24.4G)->10.0G(24.4G)]
在此集合之前,超过70%的堆被占用。为什么这不会触发标记周期

应用程序继续执行年轻一代收集,填充旧区域,最终导致分配失败和冗长的完整GC


InitiatingHeapOccupancyPercent
降至55没有明显效果

在20岁时,它确实开始进行混合收集,但只有当堆的80%被占用时才开始进行混合收集。

表明标记周期的需要是在年轻GC结束时计算的。这取决于它是在年轻GC之前还是之后使用占用率统计数据,这可能意味着eden空间始终被认为是pur占用的0%IHOP计算的姿势。45%的eden大小意味着永远无法达到70%的占用率,最大可能的占用率将为55%,此时堆将完全填满,对于混合收集来说为时已晚

但我怀疑这是否属实