当伊甸园空间年轻时已满,将触发次要GC。在次要GC过程中,伊甸园和一个源Survivor空间中的非自由对象将被复制到另一个目标Survivor空间。
我的问题是,如果目标“幸存者”空间已满,次要GC如何处理?
如果不可能执行/完成次要收集,则将执行主要/完整收集。通常使用标记扫描紧凑算法而不是复制算法来完成此操作……这是完整收集昂贵的原因之一。
但是最终(如果您继续填充堆)一个完整的集合将无法回收足够的空间以继续进行,并且将引发OOME。(或者,如果使用-XX:+UseGCOverheadLimit,则在GC中花费的时间百分比超过指定的阈值时,将引发OOME。)
-XX:+UseGCOverheadLimit