性能问答>Eden回收时机>
2回复

Eden回收时机



eden可用空间足够大的情况,为什么也会发生young gc?

829 阅读
请先登录,再评论

即使足够大,但是程序在一直分配对象,始终会占满啊

4月前

YoungGC除了内存Allocation Failure的情况,还会有一些特殊的情况被触发。
比如说你使用Parallel Scavenge收集器,会默认在要触发FullGC前先执行一次YoungGC,并且两次GC之间能让应用程序稍微运行一小下,以期降低full GC的暂停时间(因为YoungGC会尽量清理了YoungGen的死对象,减少了full GC的工作量)。可以使用-XX:-ScavengeBeforeFullGC来关闭。
再比如CMS,也有诸如 CMSScavengeBeforeRemark 参数来在 Remark 前触发一次Young GC。
甚至System.gc()在Hotspot中触发的是FullGC,但是在别的虚拟机实现中可能就是YoungGC(是JRockit还是J9记不清楚了)。

65月前