echo編輯整理,歡迎轉載,轉載請聲明文章來源。歡迎添加echo微信(微信號:t2421499075)交流學習。
堆分爲:新生代、老年代、S0、S1
對象的產生怎麼分配區域
- 新生的對象直接分配到->新生代(Eden)
- S0是我們的Eden區出現無法存儲某些對象的時候或者存儲滿了只有,整理Eden區就會存放到S0
- S1和S0的作用是一樣的,但是他是針對S0的
- 當我們對象經歷過15次GC之後,他就會被移入老年區(Old)
15次GC就被認爲認定爲老年區對象了。
回收算法有哪些?
- 標記回收
- 標記整理
- 複製清除
標記清除
- 優勢:清除算法的優點,算法簡單,實現容易了。
- 缺點:使用過程中會逐漸產生被細化的分塊,不久後就會導致無數的 小分塊散佈在堆的各處,導致後續對象的分配空間不規整。
標記整理
- 優勢:能夠有效的解決內存碎片問題
- 缺點:整理階段,由於移動了可用對象,需要去更新引用。實現相對困難,而且對於內存消耗也會更高
複製清除算法
- 優勢:吞吐量大、不會產生碎片問題
- 缺點:內存空間的浪費,GC成本增加
堆分區都用那些對應的回收算法
- 新生代->使用複製回收算法
- 老年代->使用標記整理算法