为什么需要Survivor区?只有Eden不行吗?
生活随笔
收集整理的這篇文章主要介紹了
为什么需要Survivor区?只有Eden不行吗?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如果沒有Survivor,Eden區(qū)每進(jìn)行一次Minor GC,并且沒有年齡限制的話,存活的對象就會被送到老年代。這樣一來,老年代很快被填滿,觸發(fā)Major GC(因為Major GC一般伴隨著Minor GC,也可以看做觸發(fā)了Full GC)。老年代的內(nèi)存空間遠(yuǎn)大于新生代,進(jìn)行一次Full GC消耗的時間比Minor GC長得多。執(zhí)行時間長有什么壞處?頻發(fā)的Full GC消耗的時間很長,會影響大型程序的執(zhí)行和響應(yīng)速度。
可能你會說,那就對老年代的空間進(jìn)行增加或者較少咯。假如增加老年代空間,更多存活對象才能填滿老年代。雖然降低Full GC頻率,但是隨著老年代空間加大,一旦發(fā)生Full GC,執(zhí)行所需要的時間更長。假如減少老年代空間,雖然Full GC所需時間減少,但是老年代很快被存活對象填滿,Full GC頻率增加。
所以Survivor的存在意義,就是減少被送到老年代的對象,進(jìn)而減少Full GC的發(fā)生,Survivor的預(yù)篩選保證,只有經(jīng)歷16次Minor GC還能在新生代中存活的對象,才會被送到老年代。
?
總結(jié)
以上是生活随笔為你收集整理的为什么需要Survivor区?只有Eden不行吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何理解Minor/Major/Full
- 下一篇: 为什么需要两个Survivor区?