接着上一次【https://www.cnblogs.com/webor2006/p/11123522.html】G1學習繼續開啟理論之旅。。
G1的設計規划是要替換掉CMS【理想化的】
- G1在某些方面彌補了CMS的不足,比如,CMS使用的是mark-sweep算法,自然會產生內存碎片;然而G1基於copying算法,高效的整理剩余內存,而不需要管理內存碎片。
- 另外,G1提供了更多手段,以達到對GC停頓時間的可控。
Hotspot虛擬機主要構成:
圖中的所有東東其實在之前我們已經學習過了,下面解讀一下:
傳統垃圾收集器堆結構【也就是之前我們學習的垃圾收集器的結構,非G1】:
G1收集器堆結構:
是不是耳目一新的感覺,跟傳統的結構完全不一樣了,其中從圖中還是可以看到了傳統的一些名詞,這是因為G1在給不同的區域進行命名時還是延續了之前傳統垃圾收集器的命名模式,而且各個區域的作用跟傳統的也差不多,但是!!!!G1內存的物理內存的布局方式是徹底顛覆了,從圖中可以看到是准整個堆空間不做任何明確的大塊的划分,每個區域到底是Eden Space,還是Survivor Space,還是Old Generation,並沒有統一的規則,而且像這個區域:
目前是老年代,但是在某時刻它又可以變為Eden空間或者是Survivor空間。
G1收集器堆結構:
- head被划分為一個個相等的不連續的內存區域(regions),每個regions都有一個分代的角色:eden、survivor、old。
- 對每個角色的數量並沒有強制的限定,也就是說對每種分代內存的大小,可以動態變化。
- G1最大的特點就是高效的執行回收,優先去執行那些大量對象可回收的區域(region)。