GC(Garbage Collector)概念

image.png
- MinorGC/YGC:年輕代空間耗盡
- MajorGC/FGC:在老年代無法繼續(xù)分配空間時觸發(fā),新生代、老年代同時進(jìn)行回收。
堆內(nèi)存邏輯分區(qū)(適用分代垃圾收集器)

image.png
查看新生代和老年代比例:
命令:java -XX:+PrintFlagsFinal -version | grep NewRatio
uintx NewRatio = 2
新生代:老年代比例為1:2新生代包含Eden區(qū)和兩個Survivor區(qū)
永久代(1.7)Perm Generation
必須指定大小限制
字符串常量1.7存放在永久代元數(shù)據(jù)區(qū)(1.8)Metaspace
可以不設(shè)置大小
字符串常量1.8存放在堆
對象的生命周期

image.png

image.png
- 一個對象生成,首先嘗試在棧上分配
- 分配不下,進(jìn)入Eden區(qū)
- 經(jīng)過一次垃圾回收后,進(jìn)入S1
- 下次垃圾回收進(jìn)入S2
- 在S1/S2中反復(fù),直到年齡夠了進(jìn)入Old區(qū)
對象何時進(jìn)入老年代
- 超過XX:MaxTenuringThreshold指定次數(shù)(YGC)
1.Parallel Scavenge 15
2.CMS 6
3.G1 15
不重要 - 動態(tài)年齡
年齡從小到大進(jìn)行累加,當(dāng)加入某個年齡段后,累加和超過survivor區(qū)域*TargetSurvivorRatio的時候,就從這個年齡段網(wǎng)上的年齡的對象進(jìn)行晉升。
年齡1的占用了33%,年齡2的占用了33%,累加和超過默認(rèn)的TargetSurvivorRatio(50%),年齡2和年齡3的對象都要晉升
作者:xpbob
鏈接:http://www.itdecent.cn/p/989d3b06a49d
- 分配擔(dān)保
YGC期間,Survivor空間不夠了,空間擔(dān)保直接進(jìn)入老年代。
JVM內(nèi)存分配擔(dān)保機(jī)制
【JVM】空間分配擔(dān)保機(jī)制