本文主要是介绍JVM 3. 为什么需要两个survivor区,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
JVM 3. 为什么需要两个survivor区
0. 前置知识
- 简单复制算法 的原理
- HotSpot JVM复制算法的过程
1.如果只有一个survivor区
在进行一次GC后,形成的局面是。
那么我们下面往新生代放对象时,我们放入哪里?
假如放入Eden区
然后到了第二次垃圾回收,这个时候我们还要对Survivor里面的对象回收吗?
如果回收,那不是又产生碎片内存了吗?
假如放入Surivor区
这时确实避免了碎片内存,但这不是相当于浪费了80%的内存吗?
2.两个Survivor区
我们就可以在第二次垃圾回收时,将Survivor 1 中的存活的对象放入 2 区中,防止内存碎片的产生。
所以我们需要两个survivor,并保证里面的其中一块在垃圾回收前为空,方便我们对另一块survivor进行垃圾回收。
当然顺带的,我们把eden区的存活对象也放入2区了。
这篇关于JVM 3. 为什么需要两个survivor区的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!