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