在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?
这样继续循环下去,下一次Eden满了的时候,问题来了,此时进行Minor GC,Eden和Survivor各有一些存活对象,如果此时把Eden区的存活对象硬放到Survivor区,很明显这两部分对象所占有的内存是不连续的,也就导致了内存碎片化。执行时间长有什么坏处?碎片化带来的风险是极大的,严重影响JAVA程序的性能。Survivor的存在意义,就是减少被送到老年代的对象,进而减少Full GC的发生,Survivor的预筛选保证,只有经历16次Minor GC还能在新生代中存活的对象,才会被送到老年代。
原创
2023-11-27 17:10:10 ·
82 阅读 ·
0 评论