內存申請過程

JVM會試圖爲相關Java對象在Eden中初始化一塊內存區域;
當Eden空間足夠時,內存申請結束。否則到下一步;
JVM試圖釋放在Eden中所有不活躍的對象(minor collection),釋放後若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區;
Survivor區被用來作爲Eden及old的中間交換區域,當OLD區空間足夠時,Survivor區的對象會被移到Old區,否則會被保留在Survivor區;
當old區空間不夠時,JVM會在old區進行major collection;
完全垃圾收集後,若Survivor及old區仍然無法存放從Eden複製過來的部分對象,導致JVM無法在Eden區爲新對象創建內存區域,則出現”Out of memory錯誤”。

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