当Eden空间年轻代满时,会触发Minor GC。并且在minor GC过程中,Eden和一个源Survivor空间中的非自由对象将被复制到另一个目标Survivor空间。
我的问题是,如果目标Survivor空间已满,minor GC如何处理?
最佳答案
如果无法执行/完成次要收集,则会执行主要/完整收集。这通常是使用标记-清除-紧凑算法而不是复制算法来完成的……这就是完整收集成本昂贵的原因之一。
但最终(如果你继续填充堆)完整的集合将无法回收足够的空间来继续,并且将抛出 OOME。 (或者,如果您使用-XX:+UseGCOverheadLimit
,当GC花费的时间百分比超过指定阈值时,将会抛出OOME。)
关于java - 年轻一代的垃圾收集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683866/