目前我自己总结了一个对象在堆创建过程分析,不知道写得对不对,老师能不能帮我看看?
来源:1-1 课前必读(不看会错过一个亿)

初心9288168
2020-05-27
目前我自己总结了一个对象在堆创建过程分析,不知道写得对不对,老师能不能帮我看看?
1、首先,新对象在创建时会先判断Eden区是否有足够的空间,如果有足够的空间能容纳新对象的创建成功并结束
2、如果Eden区没有足够的空间能容纳新对象,JVM会回收掉不活跃的对象 (触发Minor GC),然后再去判断是否有足够的空间容纳新对象,如果有则对象申请成功并结束
3、如果回收Eden区还是没有足够的空间容纳新对象,则往Survivor区去判断是否有足够的空间容纳Eden区已存在的部分活跃的对象,如果空间足够往下一步
4、把原先已存在Eden区部分活跃的对象移到Survivor区中,然后尝试在Eden区对该新对象进行创建,如果能则创建成功并结束,如果还是不够容纳新对象则下一步
5、判断Old区是否有足够的空间容纳Survivor区已存在的部分活跃的对象,如果空间足够往下一步
6、将已存在Survivor区部分活跃的对象移到Old区中,然后再将已存在Eden区部分活跃的对象移到Survivor区中
7、再次对Eden区进行判断是否有足够的空间能容纳该新对象,如果有则创建成功并结束,否则触发一次 Full GC
8、之后再次判断Old区是否有足够的空间容纳Survivor区已存在的部分活跃的对象,如果空间足够往下一步
9、将已存在Survivor区部分活跃的对象移到Old区中,然后再将已存在Eden区部分活跃的对象移到Survivor区中
10、再次对Eden区进行判断是否有足够的空间能容纳该新对象,如果还是没有则报 OutofMemoryError错误并结束
1回答
-
若鱼1919
2020-05-29
不同垃圾收集器的垃圾回收过程是不一样的
00
相似问题
回答 1
回答 1