JVM記憶體分代模型(用于分代垃圾回收算法)
1.部分垃圾回收器使用的模型
2.新生代+老年代+永久代(1.7)/中繼資料區(metaspace 1.8)
(1)永久代/中繼資料區----->Class
(2)永久代必須指定大小限制,中繼資料可以設定,也可以不設定,無上限(受限于機器的實體記憶體)
(3)字元串常量 在jdk1.7的時候,在永久代中,在jdk1.8後,到堆記憶體中
(4)methodArea邏輯概念---->永久代、中繼資料
3.新生代 = Eden(伊甸園區)+2個suvivor區(采用複制清除算法)YDC
(1)新生代垃圾回收後,大多數對象都會被回收,未被回收的由eden進入suvivor0。
(2)再次進行新生代記憶體回收,未被回收的由 eden+suvivor0 進入到 suvivor1中
(3)再次進行新生代記憶體回收,未被回收的由 eden+suvivor1 進入到 suvivor0中
(4)再次進行新生代記憶體回收,未被回收的由 eden+suvivor0 進入到 suvivor1中
(5)當新生代中存在一直未被回收(15個周期;cms中6個周期)的對象,将由新生代進入老年代
(6)當新生代中出現了裝不下的對象,那就進入老年代;
4.老年代
(1)當老年代也裝不下了,那就會觸發Full GC,對老年代中進行Full GC,是不建議出現的,也是jvm調優目标。Full GC:是将所有記憶體進行回收清除,并且還會出現 STW(Shop The World 業務線暫停,進行标記回收整理算法)
(2)MinorGC = YGC
(3)MajorGC = FGC
5.垃圾回收算法

(1)Serial:年輕代串行回收算法,短暫停止使用者線程,進行标記回收整理
(2)ParallelScavenge:年輕代 并行回收算法
(3)ParNew:年輕代 配合CMS的并行回收算法
(4)SerialOld:
(5)ParallelOld:
(6)CMS(Concurrent Mark sweep):老年代,并發回收算法,垃圾回收和使用者線程同時進行,減輕了STW現象(200ms)
(7)G1:(10ms)
(8)ZGC:(1ms)