java記憶體回收和堆記憶體布局

來源:互聯網
上載者:User

標籤:

      java虛擬機器是通過記憶體回收的方式進行記憶體回收的,C/C++可以通過代碼控制記憶體釋放,防止記憶體泄露,設定不同的記憶體回收方式和參數都會影響記憶體回收的效果,而這對系統的穩定性及單機的支撐能力方面。

     jvm指令集裡面沒有提供記憶體回收的釋放操作,所以不能直接釋放記憶體,而要專門的記憶體回收行程來完成記憶體回收的工作。

  不同的記憶體回收行程產品有不同的回收策略,先來看Oracle Hotspot JVM中記憶體的對布局,3.2

從可以看出,有三大地區Young/Tenured/Perm,也就是我們經常說的新生代/老年代/持久代。

 

  一般來說,新的對象被分配到新生代(Young)的Eden區,也有可能被直接分配到老年代(Perm),在進行新生代記憶體回收的時候,Eden區存活的對象被複製到空的Survior區,而下次新生代記憶體回收的時候,Eden區存活的對象和這個Survivor區中存活的對象被複製到另外一個Survivor區,並且清空當前的Survivor區。經過多次的新生代的記憶體回收,還存活的對象被移到老年代,而老年代也會根據一定時間進行呢記憶體回收。

 

在Hotspot中,針對新生代提供的GC方式:

串列GC:Serial Copying

並行GC:ParNew

並行回收GC:Parallel Scavenge

 

針對老年代有下面的GC方式:

串列GC:Serial MSC

並行MS GC:Parallel MSC

並行 GC:Compacting GC - Parallel Compacting

並發GC - CMS

 

在Sun的Java6 update14中,引入了Garbage First(G1)回收器,G1的目標是取代CMS。

 

java記憶體回收和堆記憶體布局

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.