关于JavaGC的问题,求大神解答

JavaGC中,Eden区不够的时候,会发生Minor GC,在发生Minor GC时,Eden区和Survival from区会把一些仍然存活的对象复制进Survival to区,并清除内存。
问题: 
有没有这种可能,发生Minor GC时,作为存活对象存储的那个Survival区不足以存储这些存活对象?
如果有,会发生什么?
#Java工程师#
全部评论
分配担保机制,存放到old区
点赞 回复 分享
发布于 2017-03-07 11:36
当Eden区满后会将对象存放到survivor区中,如果survivor区仍然存不下这些对象,gc收集器会将这些对象直接存放到old区。如果在survivor区中的对象足够老,也直接存放到old区,如果old区也满了,将会触发full gc,回收整个堆内存。
点赞 回复 分享
发布于 2017-03-07 08:22
《深入分析Java web技术内幕》 p216 也有说明
点赞 回复 分享
发布于 2017-03-07 08:17
答案找到啦:《深入理解Java虚拟机 JVM高级特性与最佳实践》P71 当Survivor空间不够时,需要依赖其他内存(这里指老年代)进行分配担保(Handle Promotion),如果Survivor空间不够,则直接通过分配担保机制进入老年代。
点赞 回复 分享
发布于 2017-03-07 00:38
如果survivor区空间不足的话,就需要老年代进行分配担保,将这些对象提前移入老年代中
点赞 回复 分享
发布于 2017-03-07 00:36
放进老年代
点赞 回复 分享
发布于 2017-03-07 00:31

相关推荐

03-13 16:51
已编辑
门头沟学院 硬件开发
点赞 评论 收藏
分享
purcoter:虚拟货币预测正确率百分之99,还要找工作干嘛,不早就财富自由了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务