java - 年轻一代的垃圾收集问题

标签 java garbage-collection jvm

当Eden空间年轻代满时,会触发Minor GC。并且在minor GC过程中,Eden和一个源Survivor空间中的非自由对象将被复制到另一个目标Survivor空间。

我的问题是,如果目标Survivor空间已满,minor GC如何处理?

最佳答案

如果无法执行/完成次要收集,则会执行主要/完整收集。这通常是使用标记-清除-紧凑算法而不是复制算法来完成的……这就是完整收集成本昂贵的原因之一。

但最终(如果你继续填充堆)完整的集合将无法回收足够的空间来继续,并且将抛出 OOME。 (或者,如果您使用-XX:+UseGCOverheadLimit,当GC花费的时间百分比超过指定阈值时,将会抛出OOME。)

关于java - 年轻一代的垃圾收集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13683866/

相关文章:

java - 我如何消费可选列表的每个元素?

python - Python的垃圾回收能保证在任何情况下都回收循环引用对象吗?

java - 是否可以获得用于在 java 中启动 jvm 的命令?

java - JVisualVM-Xverify :none does not solve Redefinition failed with error 62

java - 为什么Docker容器的内存使用量不会减少?

java - sh 文件 NoClassDefFoundError

java - Glassfish 3.1,JAXB 对 IllegalAnnotationExceptions 的计数,无详细信息

java - 方向更改后,WeakReference 不断返回 Activity 引用

java - 我需要锁定依赖的私有(private)方法吗?

java - 垃圾收集器如何释放那些没有任何引用名称创建的新对象