JVM内存模型和性能调优:JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?- 第18篇

前言

       Java为什么要设计Survivor,而且还要设计两个呐?

 

一、为什么要有Survivor区

如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)。老年代的内存空间远大于新生代,进行一次Full GC消耗的时间比Minor GC长得多。你也许会问,执行时间长有什么坏处?频发的Full GC消耗的时间是非常可观的,这一点会影响大型程序的执行和响应速度,更不要说某些连接会因为超时发生连接错误了。

       可以得到第一条结论:Survivor的存在意义,就是减少被送到老年代的对象进而减少Full GC的发生,Survivor的预筛选保证,只有经历15次Minor GC还能在新

你可能感兴趣的:(JVM内存模型和性能调优)