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還能在新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章