Java GC(分配失败)

Java GC(分配失败),java,garbage-collection,Java,Garbage Collection,为什么总是“GC(分配失败)” Java HotSpot(TM)64位服务器虚拟机(25.25-b02),用于linux-amd64 JRE(1.8.0_25-b17) “分配失败”是GC周期开始的一个原因 “分配失败”意味着在伊甸园中没有更多的空间来分配对象。因此,这是年轻GC的正常原因 较旧的JVM没有打印GC,这是由于GC周期较小 “分配失败”几乎是次要GC的唯一可能原因。次要GC启动的另一个原因可能是CMS备注阶段(如果启用了+XX:+CleaveBeForeRemark。当在jdk1.

为什么总是“GC(分配失败)”

Java HotSpot(TM)64位服务器虚拟机(25.25-b02),用于linux-amd64 JRE(1.8.0_25-b17)

“分配失败”是GC周期开始的一个原因

“分配失败”意味着在伊甸园中没有更多的空间来分配对象。因此,这是年轻GC的正常原因

较旧的JVM没有打印GC,这是由于GC周期较小


“分配失败”几乎是次要GC的唯一可能原因。次要GC启动的另一个原因可能是CMS备注阶段(如果启用了
+XX:+CleaveBeForeRemark

当在jdk1.8中使用CMS GC时,会出现此错误,我更改G1 GC以解决此问题

 -Xss512k -Xms6g -Xmx6g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=70 -XX:NewRatio=1 -XX:SurvivorRatio=6 -XX:G1ReservePercent=10 -XX:G1HeapRegionSize=32m -XX:ConcGCThreads=6 -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps 
“分配失败”是GC触发错误的原因。 这是GC操作的结果

当没有空间分配时(取决于执行的区域次要或主要GC),GC启动。 一旦执行GC,如果释放的空间足够好,但如果没有足够的大小,则会失败。 分配失败就是这样一种失败。 下面的文件有很好的解释

我没有完全得到这个答案,所以该避免还是不该避免?“这是年轻GC的正常原因”。那么,年轻的GC是错误的选择吗?是的,这是正常的行为GC(分配失败)对于通常一天发生多次的事件来说是一个糟糕的词汇选择。那些JVM工程师应该更经常地外出,尝试在现实世界中进行社交,这样他们就可以学习人们理解的更友好的术语。@SalvadorValencia没关系,经常阅读GC日志的人也不完全“正常”。)@萨尔瓦多瓦伦西亚,信不信由你。如果他们能够社交,他们将永远不会接触GC。”(…)然后发生分配失败(因为没有空间分配正在疏散的区域中的活动对象),并完成停止世界(STW)完整收集。”-在java 1.8的服务器模式中,我复制了一个短暂的暂停,并将这两个跟踪打印在一起:[GC(分配失败)2287742K->1148645K(2633216K),0.4571912秒][完全GC(人体工程学)1148645K->1112141K(3184128K),2.8563984秒]。所以我对你的答案投了赞成票;-)为什么投票被否决了这么多次?一个解释会很有用。因为这就像说你用铁锈重新编写了你的程序,而现在你没有这样的信息?
27.329: [GC (Allocation Failure) 27.329: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age   1:   16885304 bytes,   16885304 total
: 349568K->16618K(436928K), 0.2069129 secs] 349568K->16618K(31369920K), 0.2070712 secs] [Times: user=0.78 sys=0.04, real=0.21 secs]


28.210: [GC (Allocation Failure) 28.210: [ParNew
Desired survivor size 44728320 bytes, new threshold 15 (max 15)
- age   1:   28866504 bytes,   28866504 total
- age   2:   12582536 bytes,   41449040 total
: 366186K->47987K(436928K), 0.2144807 secs] 366186K->47987K(31369920K), 0.2146024 secs] [Times: user=0.84 sys=0.01, real=0.22 secs]


29.037: [GC (Allocation Failure) 29.038: [ParNew
Desired survivor size 44728320 bytes, new threshold 2 (max 15)
- age   1:   28443488 bytes,   28443488 total
- age   2:   28386624 bytes,   56830112 total
- age   3:   12579928 bytes,   69410040 total
: 397555K->76018K(436928K), 0.2357352 secs] 397555K->76018K(31369920K), 0.2358535 secs] [Times: user=0.93 sys=0.01, real=0.23 secs]
 -Xss512k -Xms6g -Xmx6g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=70 -XX:NewRatio=1 -XX:SurvivorRatio=6 -XX:G1ReservePercent=10 -XX:G1HeapRegionSize=32m -XX:ConcGCThreads=6 -Xloggc:gc.log -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps